@travetto/pack 3.4.5 → 3.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/pack",
3
- "version": "3.4.5",
3
+ "version": "3.4.7",
4
4
  "description": "Code packing utilities",
5
5
  "keywords": [
6
6
  "travetto",
@@ -32,7 +32,7 @@
32
32
  "rollup": "^4.5.0"
33
33
  },
34
34
  "peerDependencies": {
35
- "@travetto/cli": "^3.4.3"
35
+ "@travetto/cli": "^3.4.5"
36
36
  },
37
37
  "peerDependenciesMeta": {
38
38
  "@travetto/cli": {
@@ -14,28 +14,76 @@ export class PackConfigUtil {
14
14
  }
15
15
 
16
16
  /**
17
- * Common docker environment setup
17
+ * Setup docker ports
18
18
  */
19
- static dockerWorkspace(cfg: DockerPackConfig): string {
20
- const { folder, user, group, uid, gid } = cfg.dockerRuntime;
19
+ static dockerPorts(cfg: DockerPackConfig): string {
20
+ return (cfg.dockerPort?.map(x => `EXPOSE ${x}`) ?? []).join('\n');
21
+ }
22
+
23
+ /**
24
+ * Setup docker user
25
+ * @returns
26
+ */
27
+ static dockerUser(cfg: DockerPackConfig): string {
28
+ const { user, group, uid, gid } = cfg.dockerRuntime;
21
29
  return [
22
- ...cfg.dockerPort?.map(x => `EXPOSE ${x}`) ?? [],
23
30
  user !== 'root' ? ifElse(
24
31
  'RUN which useradd',
25
32
  `groupadd --gid ${gid} ${group} && useradd -u ${uid} -g ${group} ${user}`,
26
33
  `addgroup -g ${gid} ${group} && adduser -D -G ${group} -u ${uid} ${user}`
27
34
  ) : '',
35
+ ].join('\n');
36
+ }
37
+
38
+ /**
39
+ * Setup docker runtime folder
40
+ */
41
+ static dockerAppFolder(cfg: DockerPackConfig): string {
42
+ const { folder, user, group } = cfg.dockerRuntime;
43
+ return [
28
44
  `RUN mkdir ${folder} && chown ${user}:${group} ${folder}`,
29
- `USER ${user}`,
30
- `WORKDIR ${folder}`,
31
- `COPY --chown="${user}:${group}" . .`,
32
45
  ].join('\n');
33
46
  }
34
47
 
48
+ /**
49
+ * Docker app files copied and permissioned
50
+ */
51
+ static dockerAppFiles(cfg: DockerPackConfig): string {
52
+ const { user, group, folder } = cfg.dockerRuntime;
53
+ return `COPY --chown="${user}:${group}" . ${folder}`;
54
+ }
55
+
35
56
  /**
36
57
  * Entrypoint creation for a docker configuration
37
58
  */
38
59
  static dockerEntrypoint(cfg: DockerPackConfig): string {
39
- return `ENTRYPOINT ["${cfg.dockerRuntime.folder}/${cfg.mainName}.sh"]`;
60
+ const { user, folder } = cfg.dockerRuntime;
61
+ return [
62
+ `USER ${user}`,
63
+ `WORKDIR ${folder}`,
64
+ `ENTRYPOINT ["${folder}/${cfg.mainName}.sh"]`,
65
+ ].join('\n');
66
+ }
67
+ /**
68
+ * Common docker environment setup
69
+ */
70
+ static dockerWorkspace(cfg: DockerPackConfig): string {
71
+ return [
72
+ this.dockerPorts(cfg),
73
+ this.dockerUser(cfg),
74
+ this.dockerAppFolder(cfg),
75
+ this.dockerAppFiles(cfg),
76
+ ].filter(x => !!x).join('\n');
77
+ }
78
+
79
+ /**
80
+ * Common docker file setup
81
+ */
82
+ static dockerStandardFile(cfg: DockerPackConfig): string {
83
+ return [
84
+ this.dockerInit(cfg),
85
+ this.dockerWorkspace(cfg),
86
+ this.dockerEntrypoint(cfg)
87
+ ].join('\n');
40
88
  }
41
89
  }
@@ -1,8 +1,4 @@
1
1
  import { DockerPackFactory } from './bin/types';
2
2
  import { PackConfigUtil } from './bin/config-util';
3
3
 
4
- export const factory: DockerPackFactory = cfg => [
5
- PackConfigUtil.dockerInit(cfg),
6
- PackConfigUtil.dockerWorkspace(cfg),
7
- PackConfigUtil.dockerEntrypoint(cfg),
8
- ].join('\n');
4
+ export const factory: DockerPackFactory = cfg => PackConfigUtil.dockerStandardFile(cfg);