@ninedeploy/schemas 0.16.3 → 0.16.5
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/dist/multiNode.d.ts +22 -1
- package/dist/multiNode.d.ts.map +1 -1
- package/dist/multiNode.js +27 -0
- package/dist/multiNode.js.map +1 -1
- package/dist/serviceFiles.d.ts.map +1 -1
- package/dist/serviceFiles.js +3 -0
- package/dist/serviceFiles.js.map +1 -1
- package/package.json +1 -1
- package/src/multiNode.ts +37 -0
- package/src/serviceFiles.ts +2 -0
package/dist/multiNode.d.ts
CHANGED
|
@@ -4,13 +4,16 @@ import { z } from 'zod';
|
|
|
4
4
|
* appended in this order after the 0.15 list so the 0.15 prefix check holds.
|
|
5
5
|
* The agent's `AGENT_CAPABILITIES` must end with exactly this list.
|
|
6
6
|
*/
|
|
7
|
-
export declare const MULTI_NODE_CAPABILITIES: readonly ['stream', 'docker.runSpec', 'volume.manage', 'image.manage', 'build.nixpacks', 'build.railpack', 'git.sshkey', 'db.manage', 'swarm', 'docker.ports'];
|
|
7
|
+
export declare const MULTI_NODE_CAPABILITIES: readonly ['stream', 'docker.runSpec', 'volume.manage', 'image.manage', 'build.nixpacks', 'build.railpack', 'git.sshkey', 'db.manage', 'swarm', 'docker.ports', 'docker.userLabels', 'docker.healthCmd', 'docker.fileMounts'];
|
|
8
8
|
export declare const multiNodeCapability: z.ZodEnum<{
|
|
9
9
|
"build.nixpacks": "build.nixpacks";
|
|
10
10
|
"build.railpack": "build.railpack";
|
|
11
11
|
"db.manage": "db.manage";
|
|
12
|
+
"docker.fileMounts": "docker.fileMounts";
|
|
13
|
+
"docker.healthCmd": "docker.healthCmd";
|
|
12
14
|
"docker.ports": "docker.ports";
|
|
13
15
|
"docker.runSpec": "docker.runSpec";
|
|
16
|
+
"docker.userLabels": "docker.userLabels";
|
|
14
17
|
"git.sshkey": "git.sshkey";
|
|
15
18
|
"image.manage": "image.manage";
|
|
16
19
|
stream: "stream";
|
|
@@ -133,6 +136,24 @@ export declare const servicePlacementView: z.ZodObject<{
|
|
|
133
136
|
export type ServicePlacementView = z.infer<typeof servicePlacementView>;
|
|
134
137
|
/** The build placement a stored value means: NULL is today's `target`. */
|
|
135
138
|
export declare function effectiveBuildOn(value: BuildOn | null | undefined): BuildOn;
|
|
139
|
+
/**
|
|
140
|
+
* 0.16.5: where a service's image is built when its `build_on` is not chosen.
|
|
141
|
+
* NULL is `target` — except a node docker service built from a repository
|
|
142
|
+
* with Git LFS on: its LFS files are fetched into the panel's checkout (a
|
|
143
|
+
* node's own clone would hold pointer files), so it builds on the panel and
|
|
144
|
+
* the image is shipped to the node, as a fan-out target's already is. Such a
|
|
145
|
+
* deploy was refused before. A chosen placement is always kept.
|
|
146
|
+
*/
|
|
147
|
+
export declare function serviceBuildOn(service: {
|
|
148
|
+
buildOn?: string | null;
|
|
149
|
+
gitLfs?: boolean | null;
|
|
150
|
+
serverId?: number | null;
|
|
151
|
+
type?: string | null;
|
|
152
|
+
repoUrl?: string | null;
|
|
153
|
+
image?: string | null;
|
|
154
|
+
}): BuildOn;
|
|
155
|
+
/** Whether {@link serviceBuildOn} moves this service's build to the panel for Git LFS. */
|
|
156
|
+
export declare function lfsBuildsOnPanel(service: Parameters<typeof serviceBuildOn>[0]): boolean;
|
|
136
157
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
137
158
|
export declare function effectiveOrchestrator(value: ServiceOrchestrator | null | undefined): ServiceOrchestrator;
|
|
138
159
|
/** `PATCH /v1/servers/:id` (operator): the build-server role. */
|
package/dist/multiNode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiNode.d.ts","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,YAClC,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,OAAO,EAEP,cAAc,
|
|
1
|
+
{"version":3,"file":"multiNode.d.ts","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"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"}
|
package/dist/multiNode.js
CHANGED
|
@@ -29,6 +29,11 @@ export const MULTI_NODE_CAPABILITIES = [
|
|
|
29
29
|
'swarm',
|
|
30
30
|
// 0.16.1: `docker.runSpec` takes `ports` (UDP, ranges, a host IP).
|
|
31
31
|
'docker.ports',
|
|
32
|
+
// 0.16.4: `docker.runSpec` takes `userLabels` (custom labels) and `healthCmd` (the command healthcheck).
|
|
33
|
+
'docker.userLabels',
|
|
34
|
+
'docker.healthCmd',
|
|
35
|
+
// 0.16.5: `docker.runSpec` takes `fileMounts`, written by `file.writeMount`.
|
|
36
|
+
'docker.fileMounts',
|
|
32
37
|
];
|
|
33
38
|
export const multiNodeCapability = z.enum(MULTI_NODE_CAPABILITIES);
|
|
34
39
|
/**
|
|
@@ -151,6 +156,28 @@ export const servicePlacementView = z.object({
|
|
|
151
156
|
export function effectiveBuildOn(value) {
|
|
152
157
|
return value ?? 'target';
|
|
153
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* 0.16.5: where a service's image is built when its `build_on` is not chosen.
|
|
161
|
+
* NULL is `target` — except a node docker service built from a repository
|
|
162
|
+
* with Git LFS on: its LFS files are fetched into the panel's checkout (a
|
|
163
|
+
* node's own clone would hold pointer files), so it builds on the panel and
|
|
164
|
+
* the image is shipped to the node, as a fan-out target's already is. Such a
|
|
165
|
+
* deploy was refused before. A chosen placement is always kept.
|
|
166
|
+
*/
|
|
167
|
+
export function serviceBuildOn(service) {
|
|
168
|
+
if (lfsBuildsOnPanel(service))
|
|
169
|
+
return 'panel';
|
|
170
|
+
return effectiveBuildOn((service.buildOn ?? null));
|
|
171
|
+
}
|
|
172
|
+
/** Whether {@link serviceBuildOn} moves this service's build to the panel for Git LFS. */
|
|
173
|
+
export function lfsBuildsOnPanel(service) {
|
|
174
|
+
return (service.buildOn == null &&
|
|
175
|
+
service.gitLfs === true &&
|
|
176
|
+
service.serverId != null &&
|
|
177
|
+
(service.type ?? 'docker') === 'docker' &&
|
|
178
|
+
!!service.repoUrl &&
|
|
179
|
+
!service.image);
|
|
180
|
+
}
|
|
154
181
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
155
182
|
export function effectiveOrchestrator(value) {
|
|
156
183
|
return value ?? 'container';
|
package/dist/multiNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiNode.js","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,cAAc;AAEd,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,QAAQ;IACR,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,OAAO;IACP,mEAAmE;IACnE,cAAc;
|
|
1
|
+
{"version":3,"file":"multiNode.js","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceFiles.d.ts","sourceRoot":"","sources":["../src/serviceFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;GAKG;AAEH,yBAAyB;AACzB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,8BAA8B;AAC9B,eAAO,MAAM,sBAAsB,QAAa,CAAC;AASjD,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"serviceFiles.d.ts","sourceRoot":"","sources":["../src/serviceFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;GAKG;AAEH,yBAAyB;AACzB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,8BAA8B;AAC9B,eAAO,MAAM,sBAAsB,QAAa,CAAC;AASjD,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlE;AAED,eAAO,MAAM,eAAe,aAG1B,CAAC;AAEH,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,0EAA0E;AAC1E,eAAO,MAAM,cAAc;;;iBAMzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/serviceFiles.js
CHANGED
|
@@ -20,6 +20,9 @@ const RESERVED = ['/proc', '/sys', '/dev', '/etc/hosts', '/etc/hostname', '/etc/
|
|
|
20
20
|
export function serviceFilePathProblem(path) {
|
|
21
21
|
if (path === '/' || path.endsWith('/'))
|
|
22
22
|
return 'must name a file, not a directory';
|
|
23
|
+
// 0.16.5: `docker run -v host:container:ro` splits on ':', so such a path never mounted.
|
|
24
|
+
if (path.includes(':'))
|
|
25
|
+
return 'must not contain ":"';
|
|
23
26
|
for (const r of RESERVED) {
|
|
24
27
|
if (path === r || path.startsWith(`${r}/`))
|
|
25
28
|
return `${r} is managed by Docker and cannot be a file mount`;
|
package/dist/serviceFiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceFiles.js","sourceRoot":"","sources":["../src/serviceFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;GAKG;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEjD;;;;GAIG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;AAE1I,kDAAkD;AAClD,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,mCAAmC,CAAC;IACnF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,kDAAkD,CAAC;IAC5G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,OAAO;QAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC9B,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE,WAAW,sBAAsB,GAAG,IAAI,MAAM,CAAC;SACtG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,6BAA6B,CAAC;CACnE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"serviceFiles.js","sourceRoot":"","sources":["../src/serviceFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;GAKG;AAEH,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEjD;;;;GAIG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;AAE1I,kDAAkD;AAClD,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,mCAAmC,CAAC;IACnF,yFAAyF;IACzF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,sBAAsB,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,kDAAkD,CAAC;IAC5G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,OAAO;QAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC9B,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,sBAAsB,EAAE,WAAW,sBAAsB,GAAG,IAAI,MAAM,CAAC;SACtG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,6BAA6B,CAAC;CACnE,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/multiNode.ts
CHANGED
|
@@ -32,6 +32,11 @@ export const MULTI_NODE_CAPABILITIES = [
|
|
|
32
32
|
'swarm',
|
|
33
33
|
// 0.16.1: `docker.runSpec` takes `ports` (UDP, ranges, a host IP).
|
|
34
34
|
'docker.ports',
|
|
35
|
+
// 0.16.4: `docker.runSpec` takes `userLabels` (custom labels) and `healthCmd` (the command healthcheck).
|
|
36
|
+
'docker.userLabels',
|
|
37
|
+
'docker.healthCmd',
|
|
38
|
+
// 0.16.5: `docker.runSpec` takes `fileMounts`, written by `file.writeMount`.
|
|
39
|
+
'docker.fileMounts',
|
|
35
40
|
] as const;
|
|
36
41
|
export const multiNodeCapability = z.enum(MULTI_NODE_CAPABILITIES);
|
|
37
42
|
export type MultiNodeCapability = z.infer<typeof multiNodeCapability>;
|
|
@@ -175,6 +180,38 @@ export function effectiveBuildOn(value: BuildOn | null | undefined): BuildOn {
|
|
|
175
180
|
return value ?? 'target';
|
|
176
181
|
}
|
|
177
182
|
|
|
183
|
+
/**
|
|
184
|
+
* 0.16.5: where a service's image is built when its `build_on` is not chosen.
|
|
185
|
+
* NULL is `target` — except a node docker service built from a repository
|
|
186
|
+
* with Git LFS on: its LFS files are fetched into the panel's checkout (a
|
|
187
|
+
* node's own clone would hold pointer files), so it builds on the panel and
|
|
188
|
+
* the image is shipped to the node, as a fan-out target's already is. Such a
|
|
189
|
+
* deploy was refused before. A chosen placement is always kept.
|
|
190
|
+
*/
|
|
191
|
+
export function serviceBuildOn(service: {
|
|
192
|
+
buildOn?: string | null;
|
|
193
|
+
gitLfs?: boolean | null;
|
|
194
|
+
serverId?: number | null;
|
|
195
|
+
type?: string | null;
|
|
196
|
+
repoUrl?: string | null;
|
|
197
|
+
image?: string | null;
|
|
198
|
+
}): BuildOn {
|
|
199
|
+
if (lfsBuildsOnPanel(service)) return 'panel';
|
|
200
|
+
return effectiveBuildOn((service.buildOn ?? null) as BuildOn | null);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/** Whether {@link serviceBuildOn} moves this service's build to the panel for Git LFS. */
|
|
204
|
+
export function lfsBuildsOnPanel(service: Parameters<typeof serviceBuildOn>[0]): boolean {
|
|
205
|
+
return (
|
|
206
|
+
service.buildOn == null &&
|
|
207
|
+
service.gitLfs === true &&
|
|
208
|
+
service.serverId != null &&
|
|
209
|
+
(service.type ?? 'docker') === 'docker' &&
|
|
210
|
+
!!service.repoUrl &&
|
|
211
|
+
!service.image
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
178
215
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
179
216
|
export function effectiveOrchestrator(value: ServiceOrchestrator | null | undefined): ServiceOrchestrator {
|
|
180
217
|
return value ?? 'container';
|
package/src/serviceFiles.ts
CHANGED
|
@@ -23,6 +23,8 @@ const RESERVED = ['/proc', '/sys', '/dev', '/etc/hosts', '/etc/hostname', '/etc/
|
|
|
23
23
|
/** Why `path` cannot be a file mount, or null. */
|
|
24
24
|
export function serviceFilePathProblem(path: string): string | null {
|
|
25
25
|
if (path === '/' || path.endsWith('/')) return 'must name a file, not a directory';
|
|
26
|
+
// 0.16.5: `docker run -v host:container:ro` splits on ':', so such a path never mounted.
|
|
27
|
+
if (path.includes(':')) return 'must not contain ":"';
|
|
26
28
|
for (const r of RESERVED) {
|
|
27
29
|
if (path === r || path.startsWith(`${r}/`)) return `${r} is managed by Docker and cannot be a file mount`;
|
|
28
30
|
}
|