@alchemy.run/docker 0.0.0 → 2.0.0-beta.85

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 +46 -4
  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 +56 -0
  8. package/lib/BuildHash.d.ts.map +1 -0
  9. package/lib/BuildHash.js +172 -0
  10. package/lib/BuildHash.js.map +1 -0
  11. package/lib/Container.d.ts +450 -0
  12. package/lib/Container.d.ts.map +1 -0
  13. package/lib/Container.js +745 -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 +527 -0
  20. package/lib/Docker.d.ts.map +1 -0
  21. package/lib/Docker.js +437 -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 +179 -0
  32. package/lib/Image.d.ts.map +1 -0
  33. package/lib/Image.js +210 -0
  34. package/lib/Image.js.map +1 -0
  35. package/lib/ImageSource.d.ts +288 -0
  36. package/lib/ImageSource.d.ts.map +1 -0
  37. package/lib/ImageSource.js +498 -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 +499 -0
  60. package/lib/Service.d.ts.map +1 -0
  61. package/lib/Service.js +730 -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 +58 -3
  80. package/src/Bootstrap.ts +51 -0
  81. package/src/BuildHash.ts +265 -0
  82. package/src/Container.ts +1118 -0
  83. package/src/Context.ts +215 -0
  84. package/src/Docker.ts +1173 -0
  85. package/src/Dockerfile.ts +81 -0
  86. package/src/HealthcheckCommand.ts +35 -0
  87. package/src/Image.ts +322 -0
  88. package/src/ImageSource.ts +842 -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 +1264 -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
@@ -0,0 +1,450 @@
1
+ import * as Provider from "alchemy/Provider";
2
+ import { Resource } from "alchemy/Resource";
3
+ import * as Duration from "effect/Duration";
4
+ import * as Effect from "effect/Effect";
5
+ import * as FileSystem from "effect/FileSystem";
6
+ import * as Path from "effect/Path";
7
+ import type { PlatformError } from "effect/PlatformError";
8
+ import * as Redacted from "effect/Redacted";
9
+ import { Docker } from "./Docker.ts";
10
+ import type { Providers } from "./Providers.ts";
11
+ export interface ContainerProps {
12
+ /** Image reference or Docker image resource. */
13
+ image: Container.Image;
14
+ /** Docker context name or context resource. */
15
+ context?: Docker.ContextRef;
16
+ /**
17
+ * Container name.
18
+ *
19
+ * @default Generated from stack, stage, logical id, and instance id.
20
+ */
21
+ name?: string;
22
+ /** Command to run in the container. */
23
+ command?: string[];
24
+ /** Container environment variables. Use Redacted for secrets. */
25
+ environment?: Record<string, string | Redacted.Redacted<string>>;
26
+ /**
27
+ * Paths to Docker env files, forwarded in the declared order as repeated
28
+ * `--env-file` options. Explicit `environment` values are forwarded after
29
+ * these files and take precedence in Docker. Editing a file's contents
30
+ * replaces the container on the next deploy. Only a digest of the contents
31
+ * is kept, on the container's own label; neither contents nor digest are
32
+ * written to Alchemy state. Docker itself exposes the resolved values
33
+ * through `docker inspect`, so treat env files as secrets.
34
+ */
35
+ envFiles?: string[];
36
+ /** Host/container port mappings. */
37
+ ports?: Container.PortMapping[];
38
+ /** Volume or bind mounts. */
39
+ volumes?: Container.VolumeMapping[];
40
+ /** Restart policy. */
41
+ restart?: "no" | "always" | "on-failure" | "unless-stopped";
42
+ /**
43
+ * Container labels. Alchemy's internal ownership labels are added
44
+ * automatically.
45
+ */
46
+ labels?: Record<string, string>;
47
+ /**
48
+ * Grace period before Docker forcefully kills the container after stopping
49
+ * it.
50
+ */
51
+ stopTimeout?: Duration.Input;
52
+ /** Networks to connect after create. */
53
+ networks?: Container.NetworkMapping[];
54
+ /** Network namespace. Use `{ container: id }` to share another container's namespace. */
55
+ networkMode?: Container.NetworkMode;
56
+ /** Linux capabilities to add, for example `SYS_ADMIN`. */
57
+ capAdd?: string[];
58
+ /** Linux capabilities to drop, for example `["ALL"]`. */
59
+ capDrop?: string[];
60
+ /** Hard memory limit in Docker's byte-suffix format, e.g. `"512m"`. */
61
+ memory?: string;
62
+ /**
63
+ * Combined memory-plus-swap limit in Docker's byte-suffix format.
64
+ * Requires `memory`. Set to the same value to disable swap, or `"-1"`
65
+ * to allow unlimited swap (subject to the host).
66
+ */
67
+ memorySwap?: string;
68
+ /** Soft memory limit under contention, e.g. `"256m"`. */
69
+ memoryReservation?: string;
70
+ /** CPU quota, in cores (e.g. `0.5` limits to half a CPU). */
71
+ cpus?: number;
72
+ /** Maximum number of processes and threads in the container. */
73
+ pidsLimit?: number;
74
+ /** Mount the container's root filesystem read-only. Writable paths need a volume or tmpfs. */
75
+ readOnlyRootFilesystem?: boolean;
76
+ /** Prevent processes from gaining additional privileges through exec. */
77
+ noNewPrivileges?: boolean;
78
+ /** Run Docker's init process to forward signals and reap child processes. */
79
+ init?: boolean;
80
+ /** Runtime user, e.g. `"1000:1000"` or `"app"`. Omit to keep the image's user. */
81
+ user?: string;
82
+ /**
83
+ * Seccomp JSON profile path on the Docker CLI host, or `"builtin"` to
84
+ * select Docker's default policy. `"unconfined"` explicitly disables it.
85
+ * Changes to a profile file's contents recreate the container.
86
+ */
87
+ seccompProfile?: string;
88
+ /**
89
+ * Name of a preloaded AppArmor profile, e.g. `"docker-default"`.
90
+ * Requires AppArmor support on the target host. `"unconfined"` disables it.
91
+ */
92
+ appArmorProfile?: string;
93
+ /** Docker user-namespace mode. `"host"` opts out of daemon user remapping. */
94
+ userNamespace?: string;
95
+ /** Supplementary Linux group names or numeric GIDs. */
96
+ groupAdd?: string[];
97
+ /** Per-process resource limits. `-1` represents unlimited. */
98
+ ulimits?: Record<string, Container.Ulimit>;
99
+ /** Docker log driver, e.g. `"local"`, `"json-file"`, or `"none"`. */
100
+ logDriver?: string;
101
+ /** Driver-specific settings, such as `{ "max-size": "10m", "max-file": "3" }`. */
102
+ logOptions?: Record<string, string>;
103
+ /** Relative OOM score adjustment on Linux, from -1000 to 1000. */
104
+ oomScoreAdjustment?: number;
105
+ /** Stop signal, e.g. `"SIGTERM"` or `"SIGINT"`. */
106
+ stopSignal?: string;
107
+ /** Writable in-memory mounts, including size and POSIX mode controls. */
108
+ tmpfs?: Container.TmpfsMount[];
109
+ /** Host devices to expose to the container. */
110
+ devices?: Container.DeviceMapping[];
111
+ /**
112
+ * Extra `/etc/hosts` entries, each `hostname:address`. Docker's
113
+ * `host-gateway` alias resolves to the host machine, so
114
+ * `"host.docker.internal:host-gateway"` reaches services listening on the
115
+ * developer's machine from inside the container.
116
+ *
117
+ * On Linux `host-gateway` is the bridge gateway address, so those packets
118
+ * traverse the host's `INPUT` chain — under a default-deny firewall the
119
+ * name resolves and the connection then times out. See the Host Access
120
+ * examples.
121
+ */
122
+ extraHosts?: string[];
123
+ /** Remove the container when it exits. @default false */
124
+ removeOnExit?: boolean;
125
+ /** Start the container after creation/reconciliation. @default false */
126
+ start?: boolean;
127
+ /** Docker healthcheck configuration. */
128
+ healthcheck?: Container.Healthcheck;
129
+ }
130
+ export declare namespace Container {
131
+ type Status = "created" | "running" | "paused" | "restarting" | "removing" | "exited" | "dead";
132
+ type Image = string | {
133
+ imageRef: string;
134
+ imageId?: string;
135
+ };
136
+ interface PortMapping {
137
+ /** External port on the host. */
138
+ external: number | string;
139
+ /** Internal port inside the container. */
140
+ internal: number | string;
141
+ /** Protocol used for the mapping. @default "tcp" */
142
+ protocol?: "tcp" | "udp";
143
+ }
144
+ interface VolumeMapping {
145
+ /** Host path or named volume source. */
146
+ hostPath: string;
147
+ /** Container path. */
148
+ containerPath: string;
149
+ /** Mount read-only. @default false */
150
+ readOnly?: boolean;
151
+ }
152
+ interface TmpfsMount {
153
+ /** Absolute mount target in the container, e.g. `"/tmp"`. */
154
+ path: string;
155
+ /** Docker byte-suffix size, e.g. `"32m"`. Omit for the engine default. */
156
+ size?: string;
157
+ /** POSIX mode as a number, e.g. `0o1777` for a sticky world-writable directory. */
158
+ mode?: number;
159
+ }
160
+ interface Ulimit {
161
+ /** Process soft limit. `-1` means unlimited. */
162
+ soft: number;
163
+ /** Process hard limit. `-1` means unlimited. */
164
+ hard: number;
165
+ }
166
+ interface NetworkMapping {
167
+ /** Network name or ID. */
168
+ name: string;
169
+ /** Network aliases for the container. */
170
+ aliases?: string[];
171
+ }
172
+ type NetworkMode = string | {
173
+ container: string;
174
+ };
175
+ interface DeviceMapping {
176
+ /** Host device path. */
177
+ hostPath: string;
178
+ /** Container device path. */
179
+ containerPath: string;
180
+ /** Cgroup permissions. @default "rwm" */
181
+ permissions?: string;
182
+ }
183
+ interface Healthcheck {
184
+ /**
185
+ * Command to run for health checks. A string runs in the container's
186
+ * shell. An array follows Docker's healthcheck `Test` form:
187
+ * `["CMD-SHELL", "pg_isready -U app"]`, `["CMD", "pg_isready", "-U", "app"]`,
188
+ * or `["NONE"]` to disable the image's healthcheck.
189
+ */
190
+ cmd: string[] | string;
191
+ /** Time between checks. */
192
+ interval?: Duration.Input;
193
+ /** Maximum time a check may run. */
194
+ timeout?: Duration.Input;
195
+ /** Consecutive failures before unhealthy. */
196
+ retries?: number;
197
+ /** Startup grace period. */
198
+ startPeriod?: Duration.Input;
199
+ /** Check interval during startup. Requires Docker API 1.44+. */
200
+ startInterval?: Duration.Input;
201
+ }
202
+ }
203
+ export interface Container extends Resource<"Docker.Container", ContainerProps, {
204
+ /** Docker container id. */
205
+ id: string;
206
+ /** Docker container name. */
207
+ name: string;
208
+ /** Docker container state. */
209
+ status: Container.Status;
210
+ /** Creation timestamp in milliseconds since epoch. */
211
+ createdAt: number;
212
+ /** Image reference used to create the container. */
213
+ imageRef: string;
214
+ /**
215
+ * Map of internal container ports to their bound host ports.
216
+ * Format: `"80/tcp" -> 8080`.
217
+ */
218
+ ports: Record<string, number>;
219
+ /** Configured network namespace, when reported by Docker. */
220
+ networkMode?: string;
221
+ /** Added Linux capabilities, when reported by Docker. */
222
+ capAdd?: string[];
223
+ /** Configured host devices, when reported by Docker. */
224
+ devices?: Container.DeviceMapping[];
225
+ }, never, Providers> {
226
+ }
227
+ /**
228
+ * A Docker container managed through the active Docker context.
229
+ *
230
+ * This resource creates, starts, stops, inspects, and removes containers through
231
+ * the Docker CLI. It is not interchangeable with `Cloudflare.Container`, which
232
+ * manages Cloudflare's container platform; use pushed image references to bridge
233
+ * Docker-built images into cloud container runtimes.
234
+ *
235
+ *
236
+ * ### Running Containers
237
+ * **Example:** Nginx with a published port
238
+ * ```typescript
239
+ * const nginx = yield* Docker.Container("nginx", {
240
+ * image: "nginx:alpine",
241
+ * ports: [{ external: 8080, internal: 80 }],
242
+ * start: true,
243
+ * });
244
+ * ```
245
+ *
246
+ * ### Secret Environment
247
+ * **Example:** Redacted env var
248
+ * ```typescript
249
+ * const password = yield* Config.Redacted("POSTGRES_PASSWORD");
250
+ * const db = yield* Docker.Container("postgres", {
251
+ * image: "postgres:18-alpine",
252
+ * environment: {
253
+ * POSTGRES_PASSWORD: password,
254
+ * },
255
+ * start: true,
256
+ * });
257
+ * ```
258
+ *
259
+ * ### Environment Files
260
+ * **Example:** Layered Docker env files
261
+ * ```typescript
262
+ * const app = yield* Docker.Container("app", {
263
+ * image: "ghcr.io/acme/app:latest",
264
+ * envFiles: ["./config/base.env", "./config/production.env"],
265
+ * // Explicit values are passed after env files and take precedence.
266
+ * environment: { LOG_LEVEL: "info" },
267
+ * });
268
+ * ```
269
+ *
270
+ * Editing an env file replaces the container on the next deploy, as does
271
+ * adopting a container that uses env files (once, so later edits are tracked).
272
+ * Alchemy reads
273
+ * the files at plan time but keeps only a digest of their contents, on the
274
+ * container's own label; neither the values nor the digest are written to
275
+ * Alchemy state. Docker exposes the resolved values through `docker inspect`,
276
+ * so treat env files as secrets.
277
+ *
278
+ * ### Networks and Volumes
279
+ * **Example:** PostgreSQL with persistent storage
280
+ * ```typescript
281
+ * const network = yield* Docker.Network("app-network");
282
+ * const data = yield* Docker.Volume("postgres-data");
283
+ * const postgresName = "app-postgres";
284
+ * yield* Docker.Container("postgres", {
285
+ * name: postgresName,
286
+ * image: "postgres:18-alpine",
287
+ * ports: [{ external: 15432, internal: 5432 }],
288
+ * volumes: [{ hostPath: data.name, containerPath: "/var/lib/postgresql/data" }],
289
+ * networks: [{ name: network.name, aliases: ["postgres"] }],
290
+ * start: true,
291
+ * });
292
+ * const runtime = yield* Docker.inspectContainer(postgresName);
293
+ * ```
294
+ *
295
+ * ### Host Access
296
+ * `extraHosts` writes lines into the container's `/etc/hosts`; it changes name
297
+ * resolution and nothing else. Docker's `host-gateway` alias resolves to the
298
+ * host machine, which is how a container reaches a service on the developer's
299
+ * loopback.
300
+ *
301
+ * On Linux `host-gateway` is the Docker bridge gateway (typically
302
+ * `172.17.0.1`), so a container's packets to it arrive on the host's `INPUT`
303
+ * chain. Under a default-deny firewall — ufw ships
304
+ * `DEFAULT_INPUT_POLICY="DROP"` — the hostname resolves correctly and the
305
+ * connection then times out, which reads like an application bug rather than a
306
+ * firewall one. Allow the bridge subnet to fix it:
307
+ * `sudo ufw allow from 172.16.0.0/12`.
308
+ *
309
+ * **Example:** Reach a service on the developer's machine
310
+ * ```typescript
311
+ * const api = yield* Docker.Container("api", {
312
+ * image: "ghcr.io/acme/api:latest",
313
+ * // `host-gateway` resolves to the host machine, so a database listening
314
+ * // on the developer's loopback is reachable from inside the container.
315
+ * extraHosts: ["host.docker.internal:host-gateway"],
316
+ * environment: {
317
+ * DATABASE_URL: "postgres://postgres@host.docker.internal:5432/app",
318
+ * },
319
+ * start: true,
320
+ * });
321
+ * ```
322
+ *
323
+ * **Example:** Pin a hostname to a fixed address
324
+ * ```typescript
325
+ * const api = yield* Docker.Container("api", {
326
+ * image: "ghcr.io/acme/api:latest",
327
+ * // Any `hostname:address` pair — host access is just the common case.
328
+ * extraHosts: ["service.example:192.0.2.10"],
329
+ * start: true,
330
+ * });
331
+ * ```
332
+ *
333
+ * ### Runtime Options
334
+ * **Example:** Contain a background worker
335
+ * ```typescript
336
+ * const worker = yield* Docker.Container("worker", {
337
+ * image: "oven/bun:1",
338
+ * memory: "512m",
339
+ * memorySwap: "512m",
340
+ * memoryReservation: "256m",
341
+ * cpus: 0.5,
342
+ * pidsLimit: 128,
343
+ * readOnlyRootFilesystem: true,
344
+ * capDrop: ["ALL"],
345
+ * noNewPrivileges: true,
346
+ * init: true,
347
+ * user: "1000:1000",
348
+ * tmpfs: [{ path: "/tmp", size: "32m", mode: 0o1777 }],
349
+ * });
350
+ * ```
351
+ *
352
+ * **Example:** Customize confinement, process limits, and log rotation
353
+ * ```typescript
354
+ * const api = yield* Docker.Container("api", {
355
+ * image: "ghcr.io/acme/api:latest",
356
+ * seccompProfile: "./security/api-seccomp.json", // client-side JSON; edits roll the container
357
+ * appArmorProfile: "my-loaded-profile", // must already be loaded on the host
358
+ * groupAdd: ["1000"],
359
+ * ulimits: { nofile: { soft: 1024, hard: 4096 } },
360
+ * logDriver: "local",
361
+ * logOptions: { "max-size": "10m", "max-file": "3" },
362
+ * oomScoreAdjustment: 200,
363
+ * stopSignal: "SIGTERM",
364
+ * });
365
+ * ```
366
+ *
367
+ * **Example:** Share a donor container's network namespace
368
+ * ```typescript
369
+ * const donor = yield* Docker.Container("donor", { image: "redis:alpine" });
370
+ * const sidecar = yield* Docker.Container("sidecar", {
371
+ * image: "busybox:latest",
372
+ * networkMode: { container: donor.id },
373
+ * });
374
+ * ```
375
+ *
376
+ * **Example:** Add capabilities and devices
377
+ * ```typescript
378
+ * const worker = yield* Docker.Container("worker", {
379
+ * image: "ubuntu:latest",
380
+ * capAdd: ["SYS_ADMIN"],
381
+ * devices: [{ hostPath: "/dev/fuse", containerPath: "/dev/fuse" }],
382
+ * });
383
+ * ```
384
+ *
385
+ * **Example:** Publish on any free host port
386
+ * ```typescript
387
+ * const api = yield* Docker.Container("api", {
388
+ * image: "ghcr.io/acme/api:latest",
389
+ * // `external: 0` lets Docker choose; the assigned port is reported back.
390
+ * ports: [{ external: 0, internal: 3000 }],
391
+ * start: true,
392
+ * });
393
+ * const hostPort = api.ports["3000/tcp"];
394
+ * ```
395
+ *
396
+ * ### Traefik
397
+ * **Example:** Route a container through Traefik
398
+ * ```typescript
399
+ * const api = yield* Docker.Container("api", {
400
+ * image: "ghcr.io/acme/api:latest",
401
+ * networks: [{ name: "traefik" }],
402
+ * labels: {
403
+ * "traefik.enable": "true",
404
+ * "traefik.http.routers.api.rule": "Host(`api.example.com`)",
405
+ * "traefik.http.services.api.loadbalancer.server.port": "3000",
406
+ * },
407
+ * stopTimeout: "30 seconds",
408
+ * start: true,
409
+ * });
410
+ * ```
411
+ *
412
+ * **Example:** Use a Docker.Context resource
413
+ * ```typescript
414
+ * const remote = yield* Docker.Context("remote", {
415
+ * name: "remote-build",
416
+ * docker: "host=ssh://docker@example.com",
417
+ * });
418
+ *
419
+ * const api = yield* Docker.Container("api", {
420
+ * image: "nginx:alpine",
421
+ * context: remote,
422
+ * });
423
+ * ```
424
+ *
425
+ * @resource
426
+ * @product Container
427
+ */
428
+ export declare const Container: import("alchemy/Resource").ResourceClass<Container>;
429
+ /**
430
+ * Inspect a Docker container by name and return normalized runtime details.
431
+ *
432
+ * This is a small public wrapper around Docker's raw inspect output. It returns
433
+ * the stable data Alchemy callers typically need, including bound host ports.
434
+ */
435
+ export declare const inspectContainer: (name: string, context?: Docker.ContextRef) => Effect.Effect<Container["Attributes"], PlatformError, Docker>;
436
+ export declare const ContainerProvider: () => import("effect/Layer").Layer<Provider.Provider<Container>, never, Docker | FileSystem.FileSystem | Path.Path | import("alchemy/Stack").Stack | import("alchemy/Stage").Stage>;
437
+ declare const InvalidContainerOptions_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
438
+ readonly _tag: "InvalidContainerOptions";
439
+ } & Readonly<A>;
440
+ /**
441
+ * Raised before Docker is called when a container's options cannot be
442
+ * combined, e.g. sharing another container's network namespace while
443
+ * publishing ports.
444
+ */
445
+ export declare class InvalidContainerOptions extends InvalidContainerOptions_base<{
446
+ readonly message: string;
447
+ }> {
448
+ }
449
+ export {};
450
+ //# sourceMappingURL=Container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../src/Container.ts"],"names":[],"mappings":"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"}