@travetto/pack 4.0.0-rc.6 → 4.0.0-rc.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/README.md CHANGED
@@ -133,15 +133,16 @@ Options:
133
133
  -r, --rollup-configuration <string> Rollup configuration file (default: "@travetto/pack/support/rollup/build")
134
134
  --env-file <string> Env Flag File Name (default: ".env")
135
135
  --manifest-file <string> Manifest File Name (default: "manifest.json")
136
- -df, --docker-factory <string> Docker Factory source (default: "@travetto/pack/support/pack.dockerfile")
137
- -di, --docker-image <string> Docker Image to extend (default: "node:20-alpine")
138
- -dn, --docker-name <string> Docker Image Name (default: "travetto_pack")
139
- -dt, --docker-tag <string> Docker Image Tag (default: ["latest"])
140
- -dp, --docker-port <number> Docker Image Port (default: [])
141
- -dx, --docker-push Docker Push Tags (default: false)
136
+ -df, --docker-factory <string> Docker Factory source (default: "@travetto/pack/support/pack.dockerfile")
137
+ -di, --docker-image <string> Docker Image to extend (default: "node:20-alpine")
138
+ -dn, --docker-name <string> Docker Image Name (default: "travetto_pack")
139
+ -dt, --docker-tag <string> Docker Image Tag (default: ["latest"])
140
+ -dp, --docker-port <number> Docker Image Port (default: [])
141
+ -dx, --docker-push Docker Push Tags (default: false)
142
142
  -db, --docker-build-platform <string> Docker Build Platform
143
143
  -dr, --docker-registry <string> Docker Registry
144
- -du, --docker-runtime-user <string> Docker Runtime user
144
+ -ru, --runtime-user <string> Docker Runtime user
145
+ -rp, --runtime-package <string> Docker Runtime Packages (default: [])
145
146
  -m, --module <module> Module to run for
146
147
  -h, --help display help for command
147
148
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@travetto/pack",
3
- "version": "4.0.0-rc.6",
3
+ "version": "4.0.0-rc.7",
4
4
  "description": "Code packing utilities",
5
5
  "keywords": [
6
6
  "travetto",
@@ -29,12 +29,12 @@
29
29
  "@rollup/plugin-json": "^6.1.0",
30
30
  "@rollup/plugin-node-resolve": "^15.2.3",
31
31
  "@rollup/plugin-terser": "^0.4.4",
32
- "@travetto/base": "^4.0.0-rc.5",
33
- "@travetto/terminal": "^4.0.0-rc.5",
32
+ "@travetto/base": "^4.0.0-rc.6",
33
+ "@travetto/terminal": "^4.0.0-rc.6",
34
34
  "rollup": "^4.9.6"
35
35
  },
36
36
  "peerDependencies": {
37
- "@travetto/cli": "^4.0.0-rc.5"
37
+ "@travetto/cli": "^4.0.0-rc.6"
38
38
  },
39
39
  "peerDependenciesMeta": {
40
40
  "@travetto/cli": {
@@ -13,6 +13,21 @@ export class PackConfigUtil {
13
13
  return `FROM ${cfg.dockerImage}`;
14
14
  }
15
15
 
16
+ /**
17
+ * Install docker pages in either apk or apt environments
18
+ */
19
+ static dockerPackageInstall(cfg: DockerPackConfig): string {
20
+ const { packages } = cfg.dockerRuntime;
21
+ if (packages?.length) {
22
+ return ifElse('RUN which apk',
23
+ `apk --update add ${packages.join(' ')} && rm -rf /var/cache/apk/*`,
24
+ `apt update && apt install -y ${packages.join(' ')} && rm -rf /var/lib/{apt,dpkg,cache,log}/`,
25
+ );
26
+ } else {
27
+ return '';
28
+ }
29
+ }
30
+
16
31
  /**
17
32
  * Setup docker ports
18
33
  */
@@ -79,6 +94,7 @@ export class PackConfigUtil {
79
94
  return [
80
95
  this.dockerPorts(cfg),
81
96
  this.dockerUser(cfg),
97
+ this.dockerPackageInstall(cfg),
82
98
  this.dockerAppFolder(cfg),
83
99
  this.dockerAppFiles(cfg),
84
100
  this.dockerEnvVars(cfg),
package/src/types.ts CHANGED
@@ -33,6 +33,7 @@ export type DockerPackConfig = {
33
33
  dockerPush?: boolean;
34
34
  dockerRegistry?: string;
35
35
  dockerRuntime: {
36
+ packages?: string[];
36
37
  folder: string;
37
38
  user: string;
38
39
  uid: number;
@@ -15,25 +15,27 @@ const DEFAULT_USER = 'app';
15
15
  */
16
16
  @CliCommand({ addModule: true })
17
17
  export class PackDockerCommand extends BasePackCommand {
18
- @CliFlag({ desc: 'Docker Factory source ', short: 'df', envVars: ['PACK_DOCKER_FACTORY'] })
18
+ @CliFlag({ desc: 'Docker Factory source', short: 'df', envVars: ['PACK_DOCKER_FACTORY'] })
19
19
  dockerFactory = '@travetto/pack/support/pack.dockerfile';
20
- @CliFlag({ desc: 'Docker Image to extend ', short: 'di', envVars: ['PACK_DOCKER_IMAGE'] })
20
+ @CliFlag({ desc: 'Docker Image to extend', short: 'di', envVars: ['PACK_DOCKER_IMAGE'] })
21
21
  dockerImage = `node:${NODE_MAJOR}-alpine`;
22
- @CliFlag({ desc: 'Docker Image Name ', short: 'dn', envVars: ['PACK_DOCKER_IMAGE'] })
22
+ @CliFlag({ desc: 'Docker Image Name', short: 'dn', envVars: ['PACK_DOCKER_IMAGE'] })
23
23
  @Required(false)
24
24
  dockerName: string;
25
- @CliFlag({ desc: 'Docker Image Tag ', short: 'dt', envVars: ['PACK_DOCKER_TAGS'] })
25
+ @CliFlag({ desc: 'Docker Image Tag', short: 'dt', envVars: ['PACK_DOCKER_TAGS'] })
26
26
  dockerTag: string[] = ['latest'];
27
- @CliFlag({ desc: 'Docker Image Port ', short: 'dp', envVars: ['PACK_DOCKER_PORT'] })
27
+ @CliFlag({ desc: 'Docker Image Port', short: 'dp', envVars: ['PACK_DOCKER_PORT'] })
28
28
  dockerPort: number[] = [];
29
- @CliFlag({ desc: 'Docker Push Tags ', short: 'dx', envVars: ['PACK_DOCKER_PUSH'] })
29
+ @CliFlag({ desc: 'Docker Push Tags', short: 'dx', envVars: ['PACK_DOCKER_PUSH'] })
30
30
  dockerPush = false;
31
- @CliFlag({ desc: 'Docker Build Platform ', short: 'db', envVars: ['PACK_DOCKER_BUILD_PLATFORM'] })
31
+ @CliFlag({ desc: 'Docker Build Platform', short: 'db', envVars: ['PACK_DOCKER_BUILD_PLATFORM'] })
32
32
  dockerBuildPlatform?: string;
33
- @CliFlag({ desc: 'Docker Registry ', short: 'dr', envVars: ['PACK_DOCKER_REGISTRY'] })
33
+ @CliFlag({ desc: 'Docker Registry', short: 'dr', envVars: ['PACK_DOCKER_REGISTRY'] })
34
34
  dockerRegistry?: string;
35
- @CliFlag({ desc: 'Docker Runtime user ', short: 'du', name: 'docker-runtime-user', envVars: ['PACK_DOCKER_RUNTIME_USER'] })
35
+ @CliFlag({ desc: 'Docker Runtime user', short: 'ru', name: 'runtime-user', envVars: ['PACK_DOCKER_RUNTIME_USER'] })
36
36
  dockerRuntimeUserSrc?: string;
37
+ @CliFlag({ desc: 'Docker Runtime Packages', short: 'rp', name: 'runtime-package', envVars: ['PACK_DOCKER_RUNTIME_PACKAGES'] })
38
+ dockerRuntimePackages: string[] = [];
37
39
 
38
40
  @Ignore()
39
41
  dockerRuntime: DockerPackConfig['dockerRuntime'];
@@ -67,7 +69,7 @@ export class PackDockerCommand extends BasePackCommand {
67
69
  const gid = groupIsNum ? +groupOrGid : DEFAULT_USER_ID;
68
70
  const group = (!groupIsNum ? groupOrGid : undefined) || DEFAULT_USER;
69
71
  const user = (!userIsNum ? userOrUid : undefined) || DEFAULT_USER;
70
- this.dockerRuntime = { user, uid, group, gid, folder: `/${DEFAULT_USER}` };
72
+ this.dockerRuntime = { user, uid, group, gid, folder: `/${DEFAULT_USER}`, packages: this.dockerRuntimePackages };
71
73
  }
72
74
 
73
75
  preHelp(): void {