@alchemy.run/docker 0.0.0-stage → 2.0.0-beta.84

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.
Files changed (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +50 -2
  3. package/lib/Bootstrap.d.ts +7 -0
  4. package/lib/Bootstrap.d.ts.map +1 -0
  5. package/lib/Bootstrap.js +25 -0
  6. package/lib/Bootstrap.js.map +1 -0
  7. package/lib/BuildHash.d.ts +47 -0
  8. package/lib/BuildHash.d.ts.map +1 -0
  9. package/lib/BuildHash.js +165 -0
  10. package/lib/BuildHash.js.map +1 -0
  11. package/lib/Container.d.ts +352 -0
  12. package/lib/Container.d.ts.map +1 -0
  13. package/lib/Container.js +531 -0
  14. package/lib/Container.js.map +1 -0
  15. package/lib/Context.d.ts +86 -0
  16. package/lib/Context.d.ts.map +1 -0
  17. package/lib/Context.js +146 -0
  18. package/lib/Context.js.map +1 -0
  19. package/lib/Docker.d.ts +448 -0
  20. package/lib/Docker.d.ts.map +1 -0
  21. package/lib/Docker.js +416 -0
  22. package/lib/Docker.js.map +1 -0
  23. package/lib/Dockerfile.d.ts +72 -0
  24. package/lib/Dockerfile.d.ts.map +1 -0
  25. package/lib/Dockerfile.js +12 -0
  26. package/lib/Dockerfile.js.map +1 -0
  27. package/lib/HealthcheckCommand.d.ts +17 -0
  28. package/lib/HealthcheckCommand.d.ts.map +1 -0
  29. package/lib/HealthcheckCommand.js +33 -0
  30. package/lib/HealthcheckCommand.js.map +1 -0
  31. package/lib/Image.d.ts +151 -0
  32. package/lib/Image.d.ts.map +1 -0
  33. package/lib/Image.js +192 -0
  34. package/lib/Image.js.map +1 -0
  35. package/lib/ImageSource.d.ts +234 -0
  36. package/lib/ImageSource.d.ts.map +1 -0
  37. package/lib/ImageSource.js +469 -0
  38. package/lib/ImageSource.js.map +1 -0
  39. package/lib/Network.d.ts +70 -0
  40. package/lib/Network.d.ts.map +1 -0
  41. package/lib/Network.js +111 -0
  42. package/lib/Network.js.map +1 -0
  43. package/lib/Providers.d.ts +21 -0
  44. package/lib/Providers.d.ts.map +1 -0
  45. package/lib/Providers.js +26 -0
  46. package/lib/Providers.js.map +1 -0
  47. package/lib/Registry.d.ts +47 -0
  48. package/lib/Registry.d.ts.map +1 -0
  49. package/lib/Registry.js +67 -0
  50. package/lib/Registry.js.map +1 -0
  51. package/lib/RegistryError.d.ts +21 -0
  52. package/lib/RegistryError.d.ts.map +1 -0
  53. package/lib/RegistryError.js +28 -0
  54. package/lib/RegistryError.js.map +1 -0
  55. package/lib/RemoteImage.d.ts +118 -0
  56. package/lib/RemoteImage.d.ts.map +1 -0
  57. package/lib/RemoteImage.js +164 -0
  58. package/lib/RemoteImage.js.map +1 -0
  59. package/lib/Service.d.ts +478 -0
  60. package/lib/Service.d.ts.map +1 -0
  61. package/lib/Service.js +588 -0
  62. package/lib/Service.js.map +1 -0
  63. package/lib/ServiceImage.d.ts +78 -0
  64. package/lib/ServiceImage.d.ts.map +1 -0
  65. package/lib/ServiceImage.js +162 -0
  66. package/lib/ServiceImage.js.map +1 -0
  67. package/lib/Swarm.d.ts +119 -0
  68. package/lib/Swarm.d.ts.map +1 -0
  69. package/lib/Swarm.js +148 -0
  70. package/lib/Swarm.js.map +1 -0
  71. package/lib/Volume.d.ts +94 -0
  72. package/lib/Volume.d.ts.map +1 -0
  73. package/lib/Volume.js +133 -0
  74. package/lib/Volume.js.map +1 -0
  75. package/lib/index.d.ts +14 -0
  76. package/lib/index.d.ts.map +1 -0
  77. package/lib/index.js +13 -0
  78. package/lib/index.js.map +1 -0
  79. package/package.json +72 -3
  80. package/src/Bootstrap.ts +51 -0
  81. package/src/BuildHash.ts +255 -0
  82. package/src/Container.ts +792 -0
  83. package/src/Context.ts +215 -0
  84. package/src/Docker.ts +1079 -0
  85. package/src/Dockerfile.ts +81 -0
  86. package/src/HealthcheckCommand.ts +35 -0
  87. package/src/Image.ts +293 -0
  88. package/src/ImageSource.ts +769 -0
  89. package/src/Network.ts +169 -0
  90. package/src/Providers.ts +46 -0
  91. package/src/Registry.ts +91 -0
  92. package/src/RegistryError.ts +48 -0
  93. package/src/RemoteImage.ts +255 -0
  94. package/src/Service.ts +1080 -0
  95. package/src/ServiceImage.ts +252 -0
  96. package/src/Swarm.ts +221 -0
  97. package/src/Volume.ts +193 -0
  98. package/src/index.ts +17 -0
package/lib/Context.js ADDED
@@ -0,0 +1,146 @@
1
+ import { deepEqual, isResolved } from "alchemy/Diff";
2
+ import * as Provider from "alchemy/Provider";
3
+ import { Resource } from "alchemy/Resource";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Equal from "effect/Equal";
6
+ import { Docker, dockerPhysicalName } from "./Docker.js";
7
+ /**
8
+ * A named Docker CLI context — a pointer to a Docker engine (local socket,
9
+ * SSH host, or TCP endpoint) that other Docker resources deploy through.
10
+ *
11
+ * Pass the context (or its name) to any Docker resource's `context` prop to
12
+ * run that resource's operations against the referenced engine instead of the
13
+ * default one. Changing the endpoint updates the context in place; renaming
14
+ * it, or clearing a previously-set endpoint, replaces it.
15
+ *
16
+ *
17
+ * ### Creating Contexts
18
+ * **Example:** Remote engine over SSH
19
+ * ```typescript
20
+ * const vps = yield* Docker.Context("vps", {
21
+ * docker: "host=ssh://deploy@example.com",
22
+ * description: "production swarm manager",
23
+ * });
24
+ * ```
25
+ *
26
+ * ### Using a Context
27
+ * **Example:** Deploy resources through the context
28
+ * ```typescript
29
+ * const vps = yield* Docker.Context("vps", {
30
+ * docker: "host=ssh://deploy@example.com",
31
+ * });
32
+ * const network = yield* Docker.Network("app-net", {
33
+ * context: vps,
34
+ * driver: "overlay",
35
+ * });
36
+ * const app = yield* Docker.Service("app", {
37
+ * context: vps,
38
+ * image: "nginx:alpine",
39
+ * networks: [network.name],
40
+ * });
41
+ * ```
42
+ *
43
+ * **Example:** Local development vs production
44
+ * ```typescript
45
+ * const dev = yield* Alchemy.ALCHEMY_DEV;
46
+ * const context = yield* Docker.Context("target", {
47
+ * name: dev ? "local" : "vps",
48
+ * docker: dev ? undefined : "host=ssh://deploy@example.com",
49
+ * });
50
+ * ```
51
+ *
52
+ * @resource
53
+ * @product Context
54
+ */
55
+ export const Context = Resource("Docker.Context");
56
+ export const ContextProvider = () => Provider.effect(Context, Effect.gen(function* () {
57
+ const docker = yield* Docker;
58
+ const inspect = (nameOrId) => docker.context
59
+ .inspect(nameOrId)
60
+ .pipe(Effect.catchReason("PlatformError", "NotFound", () => Effect.undefined));
61
+ return Context.Provider.of({
62
+ list: () => Effect.succeed([]),
63
+ read: Effect.fn(function* ({ id, instanceId, olds, output }) {
64
+ const name = yield* dockerPhysicalName(id, olds, instanceId);
65
+ const live = yield* inspect(name);
66
+ if (!live)
67
+ return undefined;
68
+ const attrs = toContextAttributes(live);
69
+ if (output)
70
+ return attrs;
71
+ return attrs;
72
+ }),
73
+ diff: Effect.fn(function* ({ id, instanceId, news, olds, output }) {
74
+ if (!isResolved(news))
75
+ return undefined;
76
+ const oldDesired = yield* normalizeDesired(id, olds, instanceId);
77
+ const newDesired = yield* normalizeDesired(id, news, instanceId);
78
+ if (oldDesired.name !== newDesired.name) {
79
+ return { action: "replace", deleteFirst: true };
80
+ }
81
+ // `docker context update` can set docker host, but cannot reliably
82
+ // clear it once set. Recreate when transitioning to no docker.
83
+ if (oldDesired.docker && !newDesired.docker) {
84
+ return { action: "replace", deleteFirst: true };
85
+ }
86
+ if (!Equal.equals(oldDesired, newDesired)) {
87
+ return { action: "update" };
88
+ }
89
+ if (output && !(yield* inspect(output.id))) {
90
+ return { action: "update" };
91
+ }
92
+ return { action: "noop" };
93
+ }),
94
+ reconcile: Effect.fn(function* ({ id, instanceId, news, olds, output }) {
95
+ const desired = yield* normalizeDesired(id, news, instanceId);
96
+ if (output && olds) {
97
+ const oldDesired = yield* normalizeDesired(id, olds, instanceId);
98
+ if (deepEqual(oldDesired, desired)) {
99
+ const current = yield* inspect(output.id);
100
+ if (current) {
101
+ return toContextAttributes(current);
102
+ }
103
+ }
104
+ }
105
+ const existing = output ? yield* inspect(output.id) : yield* inspect(desired.name);
106
+ if (!existing) {
107
+ const createArgs = {
108
+ name: desired.name,
109
+ ...(desired.docker ? { docker: desired.docker } : {}),
110
+ ...(desired.description.length > 0 ? { description: desired.description } : {}),
111
+ };
112
+ yield* docker.context.create(createArgs);
113
+ return toContextAttributes(yield* docker.context.inspect(desired.name));
114
+ }
115
+ const current = toContextAttributes(existing);
116
+ const needsUpdate = current.description !== desired.description || current.docker !== desired.docker;
117
+ if (needsUpdate) {
118
+ yield* docker.context.update({
119
+ name: desired.name,
120
+ ...(desired.docker ? { docker: desired.docker } : {}),
121
+ description: desired.description,
122
+ });
123
+ }
124
+ return toContextAttributes(yield* docker.context.inspect(desired.name));
125
+ }),
126
+ delete: Effect.fn(({ output }) => docker.context.remove(output.id, true).pipe(Effect.catchReason("PlatformError", "NotFound", () => Effect.void), Effect.as(undefined))),
127
+ });
128
+ }));
129
+ // Every prop is optional, so `Docker.Context("ctx")` arrives with no props.
130
+ const normalizeDesired = (id, props, instanceId) => dockerPhysicalName(id, props, instanceId).pipe(Effect.map((name) => ({
131
+ name,
132
+ description: normalizeDescription(props?.description),
133
+ docker: normalizeDocker(props?.docker),
134
+ })));
135
+ const normalizeDescription = (description) => description?.trim() ?? "";
136
+ const normalizeDocker = (docker) => {
137
+ const value = docker?.trim();
138
+ return value && value.length > 0 ? value : undefined;
139
+ };
140
+ const toContextAttributes = (context) => ({
141
+ id: context.Name,
142
+ name: context.Name,
143
+ description: context.Metadata?.Description ?? "",
144
+ docker: context.Endpoints?.docker,
145
+ });
146
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,448 @@
1
+ import type { ScopedPlanStatusSession } from "alchemy/Report";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as FileSystem from "effect/FileSystem";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Path from "effect/Path";
7
+ import { PlatformError } from "effect/PlatformError";
8
+ import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
9
+ import * as Redacted from "effect/Redacted";
10
+ import { type DockerImagePublicationError } from "./RegistryError.ts";
11
+ /** Credentials for a single image registry, scoped to a Docker command. */
12
+ export interface RegistryCredentials {
13
+ /** Registry hostname, without a URL scheme. */
14
+ server: string;
15
+ /** Registry authentication username. */
16
+ username: string;
17
+ /** Registry password or access token. */
18
+ password: string | Redacted.Redacted<string>;
19
+ }
20
+ declare const Docker_base: Context.ServiceClass<Docker, "@alchemy/Docker", {
21
+ /** Runs a Docker command and returns the output. Use this to run a command that doesn't have a dedicated method. */
22
+ readonly run: (args: Array<string>) => Effect.Effect<CommandOutput, PlatformError>;
23
+ /** Writes build files and an inline Dockerfile to the given context directory. */
24
+ readonly materialize: (options: {
25
+ context: string;
26
+ dockerfile: string;
27
+ files: ReadonlyArray<{
28
+ path: string;
29
+ content: string | Uint8Array;
30
+ }>;
31
+ }) => Effect.Effect<void, PlatformError>;
32
+ readonly container: {
33
+ /** Creates a new container. */
34
+ readonly create: (options: {
35
+ name: string;
36
+ image: string;
37
+ volume: Array<string> | undefined;
38
+ env: Record<string, string> | undefined;
39
+ /** Paths to Docker env files, forwarded as repeated `--env-file`. */
40
+ "env-file"?: Array<string> | undefined;
41
+ restart: "no" | "always" | "on-failure" | "unless-stopped";
42
+ rm: boolean;
43
+ "health-cmd": string | undefined;
44
+ /** `--no-healthcheck`: disable any healthcheck defined by the image. */
45
+ "no-healthcheck"?: boolean;
46
+ "health-interval": string | undefined;
47
+ "health-timeout": string | undefined;
48
+ "health-retries": number | undefined;
49
+ "health-start-period": string | undefined;
50
+ "health-start-interval": string | undefined;
51
+ "stop-timeout": string | undefined;
52
+ p: Array<string> | undefined;
53
+ /** `--add-host` entries, each `hostname:address`. */
54
+ "add-host"?: Array<string> | undefined;
55
+ /** Docker network namespace, including `container:<id>`. */
56
+ network?: string | undefined;
57
+ /** Linux capabilities to add. */
58
+ "cap-add"?: Array<string> | undefined;
59
+ /** Host devices in Docker's `host:container[:permissions]` form. */
60
+ device?: Array<string> | undefined;
61
+ command: Array<string> | undefined;
62
+ label?: Record<string, string>;
63
+ context?: string;
64
+ }) => Effect.Effect<CommandOutput, PlatformError>;
65
+ /** Inspects a container. */
66
+ readonly inspect: (name: string, context?: string) => Effect.Effect<Docker.Container, PlatformError>;
67
+ /** Removes a container. */
68
+ readonly remove: (name: string, force?: boolean, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
69
+ /** Starts a container. */
70
+ readonly start: (name: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
71
+ /** Stops a container. */
72
+ readonly stop: (name: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
73
+ };
74
+ readonly image: {
75
+ /**
76
+ * Builds locally, or publishes to a registry when credentials are
77
+ * supplied. With Buildx 0.26.0 or newer the image is exported straight
78
+ * from BuildKit (`buildx build --push`); older plugins build into the
79
+ * local image store and then `push`. If a session is provided, build
80
+ * logs will be emitted as session notes.
81
+ */
82
+ readonly build: (options: {
83
+ context: string;
84
+ /** Image tags to build and publish together. */
85
+ tag: string | [string, ...string[]];
86
+ file?: string;
87
+ platform?: string;
88
+ target?: string;
89
+ "build-arg"?: Record<string, string>;
90
+ "cache-from"?: Array<string>;
91
+ "cache-to"?: Array<string>;
92
+ args?: Array<string>;
93
+ engineContext?: string;
94
+ /** Registry auth for the build itself (base images, caches); publishes nothing. */
95
+ credentials?: RegistryCredentials;
96
+ }, session?: ScopedPlanStatusSession, registry?: RegistryCredentials) => Effect.Effect<CommandOutput, DockerImagePublicationError>;
97
+ /** Pulls an image. */
98
+ readonly pull: (ref: string, platform?: string, context?: string, session?: Pick<ScopedPlanStatusSession, "note">) => Effect.Effect<CommandOutput, PlatformError>;
99
+ /**
100
+ * Pushes an image to a registry. When `platform` is given, only that
101
+ * platform's manifest is pushed (`docker push --platform`) — with the
102
+ * containerd image store, a bare push sends every locally-present
103
+ * variant of a multi-arch tag, so a stale other-arch variant in the
104
+ * local cache would otherwise reach the registry. Engines whose store
105
+ * doesn't support the flag fall back to a plain push (their local tag
106
+ * is already narrowed by `pull --platform`).
107
+ */
108
+ readonly push: (ref: string, credentials: RegistryCredentials, platform?: string, context?: string, session?: Pick<ScopedPlanStatusSession, "note">) => Effect.Effect<CommandOutput, DockerImagePublicationError>;
109
+ /** Tags an image. */
110
+ readonly tag: (source: string, target: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
111
+ /** Inspects an image. */
112
+ readonly inspect: (ref: string, context?: string) => Effect.Effect<Docker.Image, PlatformError>;
113
+ /** Removes an image. */
114
+ readonly remove: (ref: string | Array<string>, force?: boolean, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
115
+ };
116
+ readonly volume: {
117
+ /** Creates a new volume. */
118
+ readonly create: (options: {
119
+ name: string;
120
+ driver?: string;
121
+ opt?: Record<string, string>;
122
+ label?: Record<string, string>;
123
+ context?: string;
124
+ }) => Effect.Effect<CommandOutput, PlatformError>;
125
+ /** Removes a volume. */
126
+ readonly remove: (name: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
127
+ /** Inspects a volume. */
128
+ readonly inspect: (name: string, context?: string) => Effect.Effect<Docker.Volume, PlatformError>;
129
+ };
130
+ readonly context: {
131
+ /** Creates a new Docker context. */
132
+ readonly create: (options: {
133
+ name: string;
134
+ description?: string;
135
+ /** Raw value for `--docker`, for example `host=ssh://user@host`. */
136
+ docker?: string;
137
+ }) => Effect.Effect<CommandOutput, PlatformError>;
138
+ /** Updates an existing Docker context. */
139
+ readonly update: (options: {
140
+ name: string;
141
+ description?: string;
142
+ /** Raw value for `--docker`, for example `host=ssh://user@host`. */
143
+ docker?: string;
144
+ }) => Effect.Effect<CommandOutput, PlatformError>;
145
+ /** Inspects a Docker context. */
146
+ readonly inspect: (name: string) => Effect.Effect<Docker.Context, PlatformError>;
147
+ /** Removes a Docker context. */
148
+ readonly remove: (name: string, force?: boolean) => Effect.Effect<CommandOutput, PlatformError>;
149
+ };
150
+ readonly network: {
151
+ /** Creates a new network. */
152
+ readonly create: (options: {
153
+ name: string;
154
+ driver: string;
155
+ ipv6?: boolean;
156
+ label?: Record<string, string>;
157
+ context?: string;
158
+ }) => Effect.Effect<CommandOutput, PlatformError>;
159
+ /** Connects a container to a network. */
160
+ readonly connect: (options: {
161
+ network: string;
162
+ container: string;
163
+ alias?: string[];
164
+ context?: string;
165
+ }) => Effect.Effect<CommandOutput, PlatformError>;
166
+ /** Disconnects a container from a network. */
167
+ readonly disconnect: (options: {
168
+ network: string;
169
+ container: string;
170
+ context?: string;
171
+ }) => Effect.Effect<CommandOutput, PlatformError>;
172
+ /** Inspects a network. */
173
+ readonly inspect: (name: string, context?: string) => Effect.Effect<Docker.Network, PlatformError>;
174
+ /** Removes a network. */
175
+ readonly remove: (id: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
176
+ };
177
+ readonly swarm: {
178
+ /** Initializes swarm mode on the engine (`docker swarm init`). */
179
+ readonly init: (options: {
180
+ context?: string;
181
+ "advertise-addr"?: string;
182
+ "listen-addr"?: string;
183
+ "default-addr-pool"?: string[];
184
+ "default-addr-pool-mask-length"?: number;
185
+ }) => Effect.Effect<CommandOutput, PlatformError>;
186
+ /** Reads the engine's swarm state (`docker info --format '{{json .Swarm}}'`). */
187
+ readonly info: (context?: string) => Effect.Effect<Docker.SwarmInfo, PlatformError>;
188
+ /** Leaves the swarm (`docker swarm leave`). */
189
+ readonly leave: (force?: boolean, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
190
+ };
191
+ readonly service: {
192
+ /** Creates a new service. */
193
+ readonly create: (options: {
194
+ name: string;
195
+ image: string;
196
+ context?: string;
197
+ replicas?: number;
198
+ "endpoint-mode"?: "vip" | "dnsrr";
199
+ network?: string[];
200
+ constraint?: string[];
201
+ "replicas-max-per-node"?: number;
202
+ "placement-pref"?: string[];
203
+ "update-parallelism"?: number;
204
+ "update-delay"?: string;
205
+ "update-monitor"?: string;
206
+ "update-failure-action"?: "pause" | "continue" | "rollback";
207
+ "update-max-failure-ratio"?: number;
208
+ "update-order"?: "stop-first" | "start-first";
209
+ "rollback-parallelism"?: number;
210
+ "rollback-delay"?: string;
211
+ "rollback-monitor"?: string;
212
+ "rollback-failure-action"?: "pause" | "continue" | "rollback";
213
+ "rollback-max-failure-ratio"?: number;
214
+ "rollback-order"?: "stop-first" | "start-first";
215
+ "restart-condition"?: "none" | "on-failure" | "any";
216
+ "restart-delay"?: string;
217
+ "restart-max-attempts"?: number;
218
+ "restart-window"?: string;
219
+ "health-cmd"?: string;
220
+ /** `--no-healthcheck`: disable any healthcheck defined by the image. */
221
+ "no-healthcheck"?: boolean;
222
+ "health-interval"?: string;
223
+ "health-timeout"?: string;
224
+ "health-retries"?: number;
225
+ "health-start-period"?: string;
226
+ "stop-grace-period"?: string;
227
+ mount?: string[];
228
+ secret?: string[];
229
+ config?: string[];
230
+ "read-only"?: boolean;
231
+ publish?: string[];
232
+ label?: Record<string, string>;
233
+ env?: Record<string, string>;
234
+ command?: string[];
235
+ args?: string[];
236
+ }) => Effect.Effect<CommandOutput, PlatformError>;
237
+ /** Updates an existing service. */
238
+ readonly update: (options: {
239
+ id: string;
240
+ image: string;
241
+ context?: string;
242
+ replicas?: number;
243
+ "endpoint-mode"?: "vip" | "dnsrr";
244
+ "constraint-add"?: string[];
245
+ "constraint-rm"?: string[];
246
+ "replicas-max-per-node"?: number;
247
+ "placement-pref"?: string[];
248
+ "update-parallelism"?: number;
249
+ "update-delay"?: string;
250
+ "update-monitor"?: string;
251
+ "update-failure-action"?: "pause" | "continue" | "rollback";
252
+ "update-max-failure-ratio"?: number;
253
+ "update-order"?: "stop-first" | "start-first";
254
+ "rollback-parallelism"?: number;
255
+ "rollback-delay"?: string;
256
+ "rollback-monitor"?: string;
257
+ "rollback-failure-action"?: "pause" | "continue" | "rollback";
258
+ "rollback-max-failure-ratio"?: number;
259
+ "rollback-order"?: "stop-first" | "start-first";
260
+ "restart-condition"?: "none" | "on-failure" | "any";
261
+ "restart-delay"?: string;
262
+ "restart-max-attempts"?: number;
263
+ "restart-window"?: string;
264
+ "health-cmd"?: string;
265
+ /** `--no-healthcheck`: disable any healthcheck defined by the image. */
266
+ "no-healthcheck"?: boolean;
267
+ "health-interval"?: string;
268
+ "health-timeout"?: string;
269
+ "health-retries"?: number;
270
+ "health-start-period"?: string;
271
+ "stop-grace-period"?: string;
272
+ "mount-add"?: string[];
273
+ "secret-add"?: string[];
274
+ "config-add"?: string[];
275
+ "read-only"?: boolean;
276
+ "publish-add"?: string[];
277
+ "label-add"?: Record<string, string>;
278
+ "label-rm"?: string[];
279
+ "env-add"?: Record<string, string>;
280
+ args?: string;
281
+ }) => Effect.Effect<CommandOutput, PlatformError>;
282
+ /** Inspects a service. */
283
+ readonly inspect: (id: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
284
+ /** Removes a service. */
285
+ readonly remove: (id: string, context?: string) => Effect.Effect<CommandOutput, PlatformError>;
286
+ };
287
+ }>;
288
+ export declare class Docker extends Docker_base {
289
+ }
290
+ export declare namespace Docker {
291
+ type ContextRef = string | {
292
+ name: string;
293
+ };
294
+ /**
295
+ * A reference to the Docker engine an operation runs against: a context
296
+ * name, a `Docker.Context` resource, or a `Docker.Swarm` resource
297
+ * (narrowed structurally by its `nodeId` attribute) — passing the swarm
298
+ * also orders the operation after the swarm is initialized.
299
+ */
300
+ type EngineRef = ContextRef | {
301
+ nodeId: string;
302
+ context?: string;
303
+ };
304
+ interface SwarmInfo {
305
+ NodeID: string;
306
+ LocalNodeState: "inactive" | "pending" | "active" | "error" | "locked" | (string & {});
307
+ ControlAvailable: boolean;
308
+ Cluster?: {
309
+ ID: string;
310
+ CreatedAt?: string;
311
+ } | null;
312
+ RemoteManagers?: Array<{
313
+ NodeID: string;
314
+ Addr: string;
315
+ }> | null;
316
+ Managers?: number;
317
+ Nodes?: number;
318
+ }
319
+ type ContainerStatus = "created" | "running" | "paused" | "restarting" | "removing" | "exited" | "dead";
320
+ interface Container {
321
+ Id: string;
322
+ Image: string;
323
+ Name?: string;
324
+ State: {
325
+ Status: ContainerStatus;
326
+ /** Present when the container has a healthcheck. */
327
+ Health?: {
328
+ Status: "starting" | "healthy" | "unhealthy";
329
+ };
330
+ };
331
+ Created: string;
332
+ Config: {
333
+ Image: string;
334
+ Cmd: string[] | null;
335
+ Env: string[] | null;
336
+ Labels: Record<string, string> | null;
337
+ StopTimeout?: number;
338
+ Healthcheck?: {
339
+ Test: string[] | null;
340
+ Interval?: number;
341
+ Timeout?: number;
342
+ Retries?: number;
343
+ StartPeriod?: number;
344
+ StartInterval?: number;
345
+ } | null;
346
+ };
347
+ HostConfig: {
348
+ PortBindings: Record<string, Array<{
349
+ HostIp: string;
350
+ HostPort: string;
351
+ }> | null> | null;
352
+ Binds: string[] | null;
353
+ ExtraHosts: string[] | null;
354
+ RestartPolicy: {
355
+ Name: string;
356
+ MaximumRetryCount: number;
357
+ };
358
+ AutoRemove: boolean;
359
+ NetworkMode?: string;
360
+ CapAdd?: string[] | null;
361
+ Devices?: Array<{
362
+ PathOnHost: string;
363
+ PathInContainer: string;
364
+ CgroupPermissions: string;
365
+ }> | null;
366
+ };
367
+ NetworkSettings: {
368
+ Networks: Record<string, {
369
+ NetworkID: string;
370
+ Aliases: string[] | null;
371
+ }> | null;
372
+ Ports?: Record<string, Array<{
373
+ HostIp: string;
374
+ HostPort: string;
375
+ }> | null> | null;
376
+ };
377
+ }
378
+ interface Image {
379
+ Id: string;
380
+ Created?: string;
381
+ RepoTags?: string[] | null;
382
+ RepoDigests?: string[] | null;
383
+ }
384
+ interface Volume {
385
+ CreatedAt: string;
386
+ Driver: string;
387
+ Labels: Record<string, string> | null;
388
+ Mountpoint: string;
389
+ Name: string;
390
+ Options: Record<string, string> | null;
391
+ Scope: string;
392
+ }
393
+ interface Context {
394
+ Name: string;
395
+ Metadata?: {
396
+ Description?: string;
397
+ };
398
+ Endpoints?: {
399
+ docker?: string;
400
+ };
401
+ }
402
+ interface Network {
403
+ Name: string;
404
+ Id: string;
405
+ Created: string;
406
+ Scope: string;
407
+ Driver: string;
408
+ EnableIPv6: boolean;
409
+ Labels: Record<string, string> | null;
410
+ }
411
+ }
412
+ export interface CommandOutput {
413
+ exitCode: ChildProcessSpawner.ExitCode;
414
+ stdout: string;
415
+ stderr: string;
416
+ }
417
+ export interface DockerOptions {
418
+ /**
419
+ * The Docker-compatible CLI to run, e.g. `"podman"`. The `DOCKER_BIN`
420
+ * environment variable, when set, overrides it (per machine or CI).
421
+ * @default "docker"
422
+ */
423
+ bin?: string;
424
+ }
425
+ /**
426
+ * Extra environment for every Docker CLI invocation, layered over the
427
+ * process environment (per-call variables still win). Scope it with
428
+ * `Effect.provideService(DockerEnvironment, { BUILDX_BUILDER: "ci" })` to
429
+ * target a buildx builder or Docker context without mutating `process.env`.
430
+ * @default {}
431
+ */
432
+ export declare const DockerEnvironment: Context.Reference<Record<string, string>>;
433
+ /** The Docker CLI client, running `options.bin` (`DOCKER_BIN` overrides). */
434
+ export declare const dockerLive: (options?: DockerOptions) => Layer.Layer<Docker, never, ChildProcessSpawner.ChildProcessSpawner | FileSystem.FileSystem | Path.Path>;
435
+ /** The Docker CLI client, running `docker` (or `DOCKER_BIN`). */
436
+ export declare const DockerLive: Layer.Layer<Docker, never, ChildProcessSpawner.ChildProcessSpawner | FileSystem.FileSystem | Path.Path>;
437
+ export declare const dockerContextName: (context: Docker.ContextRef | undefined) => string | undefined;
438
+ /**
439
+ * Resolve an {@link Docker.EngineRef} to a context name. A `Docker.Swarm`
440
+ * reference (narrowed by its `nodeId` attribute) contributes the context the
441
+ * swarm was initialized on.
442
+ */
443
+ export declare const dockerEngineContextName: (ref: Docker.EngineRef | undefined) => string | undefined;
444
+ export declare const dockerPhysicalName: (id: string, props: {
445
+ name?: string;
446
+ } | undefined, instanceId: string, maxLength?: number) => Effect.Effect<string, never, import("alchemy/ResourceContext").ResourceContext | import("alchemy/Stack").Stack | import("alchemy/Stage").Stage>;
447
+ export {};
448
+ //# sourceMappingURL=Docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docker.d.ts","sourceRoot":"","sources":["../src/Docker.ts"],"names":[],"mappings":"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"}