@ninedeploy/schemas 0.16.4 → 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 +20 -1
- package/dist/multiNode.d.ts.map +1 -1
- package/dist/multiNode.js +24 -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 +34 -0
- package/src/serviceFiles.ts +2 -0
package/dist/multiNode.d.ts
CHANGED
|
@@ -4,11 +4,12 @@ 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', 'docker.userLabels', 'docker.healthCmd'];
|
|
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";
|
|
12
13
|
"docker.healthCmd": "docker.healthCmd";
|
|
13
14
|
"docker.ports": "docker.ports";
|
|
14
15
|
"docker.runSpec": "docker.runSpec";
|
|
@@ -135,6 +136,24 @@ export declare const servicePlacementView: z.ZodObject<{
|
|
|
135
136
|
export type ServicePlacementView = z.infer<typeof servicePlacementView>;
|
|
136
137
|
/** The build placement a stored value means: NULL is today's `target`. */
|
|
137
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;
|
|
138
157
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
139
158
|
export declare function effectiveOrchestrator(value: ServiceOrchestrator | null | undefined): ServiceOrchestrator;
|
|
140
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,EAEd,mBAAmB,EACnB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"multiNode.d.ts","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"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"}
|
package/dist/multiNode.js
CHANGED
|
@@ -32,6 +32,8 @@ export const MULTI_NODE_CAPABILITIES = [
|
|
|
32
32
|
// 0.16.4: `docker.runSpec` takes `userLabels` (custom labels) and `healthCmd` (the command healthcheck).
|
|
33
33
|
'docker.userLabels',
|
|
34
34
|
'docker.healthCmd',
|
|
35
|
+
// 0.16.5: `docker.runSpec` takes `fileMounts`, written by `file.writeMount`.
|
|
36
|
+
'docker.fileMounts',
|
|
35
37
|
];
|
|
36
38
|
export const multiNodeCapability = z.enum(MULTI_NODE_CAPABILITIES);
|
|
37
39
|
/**
|
|
@@ -154,6 +156,28 @@ export const servicePlacementView = z.object({
|
|
|
154
156
|
export function effectiveBuildOn(value) {
|
|
155
157
|
return value ?? 'target';
|
|
156
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
|
+
}
|
|
157
181
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
158
182
|
export function effectiveOrchestrator(value) {
|
|
159
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;IACd,yGAAyG;IACzG,mBAAmB;IACnB,kBAAkB;
|
|
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
|
@@ -35,6 +35,8 @@ export const MULTI_NODE_CAPABILITIES = [
|
|
|
35
35
|
// 0.16.4: `docker.runSpec` takes `userLabels` (custom labels) and `healthCmd` (the command healthcheck).
|
|
36
36
|
'docker.userLabels',
|
|
37
37
|
'docker.healthCmd',
|
|
38
|
+
// 0.16.5: `docker.runSpec` takes `fileMounts`, written by `file.writeMount`.
|
|
39
|
+
'docker.fileMounts',
|
|
38
40
|
] as const;
|
|
39
41
|
export const multiNodeCapability = z.enum(MULTI_NODE_CAPABILITIES);
|
|
40
42
|
export type MultiNodeCapability = z.infer<typeof multiNodeCapability>;
|
|
@@ -178,6 +180,38 @@ export function effectiveBuildOn(value: BuildOn | null | undefined): BuildOn {
|
|
|
178
180
|
return value ?? 'target';
|
|
179
181
|
}
|
|
180
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
|
+
|
|
181
215
|
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
182
216
|
export function effectiveOrchestrator(value: ServiceOrchestrator | null | undefined): ServiceOrchestrator {
|
|
183
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
|
}
|