@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.
- package/LICENSE +201 -0
- package/README.md +50 -2
- package/lib/Bootstrap.d.ts +7 -0
- package/lib/Bootstrap.d.ts.map +1 -0
- package/lib/Bootstrap.js +25 -0
- package/lib/Bootstrap.js.map +1 -0
- package/lib/BuildHash.d.ts +47 -0
- package/lib/BuildHash.d.ts.map +1 -0
- package/lib/BuildHash.js +165 -0
- package/lib/BuildHash.js.map +1 -0
- package/lib/Container.d.ts +352 -0
- package/lib/Container.d.ts.map +1 -0
- package/lib/Container.js +531 -0
- package/lib/Container.js.map +1 -0
- package/lib/Context.d.ts +86 -0
- package/lib/Context.d.ts.map +1 -0
- package/lib/Context.js +146 -0
- package/lib/Context.js.map +1 -0
- package/lib/Docker.d.ts +448 -0
- package/lib/Docker.d.ts.map +1 -0
- package/lib/Docker.js +416 -0
- package/lib/Docker.js.map +1 -0
- package/lib/Dockerfile.d.ts +72 -0
- package/lib/Dockerfile.d.ts.map +1 -0
- package/lib/Dockerfile.js +12 -0
- package/lib/Dockerfile.js.map +1 -0
- package/lib/HealthcheckCommand.d.ts +17 -0
- package/lib/HealthcheckCommand.d.ts.map +1 -0
- package/lib/HealthcheckCommand.js +33 -0
- package/lib/HealthcheckCommand.js.map +1 -0
- package/lib/Image.d.ts +151 -0
- package/lib/Image.d.ts.map +1 -0
- package/lib/Image.js +192 -0
- package/lib/Image.js.map +1 -0
- package/lib/ImageSource.d.ts +234 -0
- package/lib/ImageSource.d.ts.map +1 -0
- package/lib/ImageSource.js +469 -0
- package/lib/ImageSource.js.map +1 -0
- package/lib/Network.d.ts +70 -0
- package/lib/Network.d.ts.map +1 -0
- package/lib/Network.js +111 -0
- package/lib/Network.js.map +1 -0
- package/lib/Providers.d.ts +21 -0
- package/lib/Providers.d.ts.map +1 -0
- package/lib/Providers.js +26 -0
- package/lib/Providers.js.map +1 -0
- package/lib/Registry.d.ts +47 -0
- package/lib/Registry.d.ts.map +1 -0
- package/lib/Registry.js +67 -0
- package/lib/Registry.js.map +1 -0
- package/lib/RegistryError.d.ts +21 -0
- package/lib/RegistryError.d.ts.map +1 -0
- package/lib/RegistryError.js +28 -0
- package/lib/RegistryError.js.map +1 -0
- package/lib/RemoteImage.d.ts +118 -0
- package/lib/RemoteImage.d.ts.map +1 -0
- package/lib/RemoteImage.js +164 -0
- package/lib/RemoteImage.js.map +1 -0
- package/lib/Service.d.ts +478 -0
- package/lib/Service.d.ts.map +1 -0
- package/lib/Service.js +588 -0
- package/lib/Service.js.map +1 -0
- package/lib/ServiceImage.d.ts +78 -0
- package/lib/ServiceImage.d.ts.map +1 -0
- package/lib/ServiceImage.js +162 -0
- package/lib/ServiceImage.js.map +1 -0
- package/lib/Swarm.d.ts +119 -0
- package/lib/Swarm.d.ts.map +1 -0
- package/lib/Swarm.js +148 -0
- package/lib/Swarm.js.map +1 -0
- package/lib/Volume.d.ts +94 -0
- package/lib/Volume.d.ts.map +1 -0
- package/lib/Volume.js +133 -0
- package/lib/Volume.js.map +1 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -0
- package/package.json +72 -3
- package/src/Bootstrap.ts +51 -0
- package/src/BuildHash.ts +255 -0
- package/src/Container.ts +792 -0
- package/src/Context.ts +215 -0
- package/src/Docker.ts +1079 -0
- package/src/Dockerfile.ts +81 -0
- package/src/HealthcheckCommand.ts +35 -0
- package/src/Image.ts +293 -0
- package/src/ImageSource.ts +769 -0
- package/src/Network.ts +169 -0
- package/src/Providers.ts +46 -0
- package/src/Registry.ts +91 -0
- package/src/RegistryError.ts +48 -0
- package/src/RemoteImage.ts +255 -0
- package/src/Service.ts +1080 -0
- package/src/ServiceImage.ts +252 -0
- package/src/Swarm.ts +221 -0
- package/src/Volume.ts +193 -0
- package/src/index.ts +17 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { AlchemyContext } from "alchemy/AlchemyContext";
|
|
2
|
+
import * as Bundle from "alchemy/Bundle/Bundle";
|
|
3
|
+
import { findCwdForBundle, getStableContextDir, resolveMainPath } from "alchemy/Bundle/TempRoot";
|
|
4
|
+
import { hashDirectory } from "alchemy/Command/Memo";
|
|
5
|
+
import { sha256Object } from "alchemy/Util/sha256";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as FileSystem from "effect/FileSystem";
|
|
8
|
+
import * as Path from "effect/Path";
|
|
9
|
+
import * as Schedule from "effect/Schedule";
|
|
10
|
+
import { Docker } from "./Docker.js";
|
|
11
|
+
import { isInlineDockerfile } from "./Dockerfile.js";
|
|
12
|
+
/**
|
|
13
|
+
* Which image source a props bag declares. `main` always wins (the other
|
|
14
|
+
* fields then describe its ENVIRONMENT); without `main`, `image` is the
|
|
15
|
+
* mirrored-verbatim source and any `context`/`dockerfile` (path or inline)
|
|
16
|
+
* is an external docker build.
|
|
17
|
+
*/
|
|
18
|
+
export const imageSourceKind = (source) => source.main !== undefined
|
|
19
|
+
? "main"
|
|
20
|
+
: source.image !== undefined
|
|
21
|
+
? "image"
|
|
22
|
+
: source.context !== undefined || source.dockerfile !== undefined
|
|
23
|
+
? "context"
|
|
24
|
+
: undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Validate environment-source exclusivity. Dies (plan-time defect) on
|
|
27
|
+
* `image`+`dockerfile`, `image`+`context`, or inline-`dockerfile`+`context`.
|
|
28
|
+
*/
|
|
29
|
+
export const validateImageSource = (id, source) => {
|
|
30
|
+
if (source.image !== undefined && source.dockerfile !== undefined) {
|
|
31
|
+
return Effect.die(new Error(`'${id}': 'image' and 'dockerfile' are both set — declare exactly one environment source (an 'image' ref, or a Dockerfile)`));
|
|
32
|
+
}
|
|
33
|
+
if (source.image !== undefined && source.context !== undefined) {
|
|
34
|
+
return Effect.die(new Error(`'${id}': 'image' and 'context' are both set — declare exactly one environment source`));
|
|
35
|
+
}
|
|
36
|
+
if (source.dockerfile !== undefined &&
|
|
37
|
+
isInlineDockerfile(source.dockerfile) &&
|
|
38
|
+
source.context !== undefined) {
|
|
39
|
+
return Effect.die(new Error(`'${id}': inline 'dockerfile' content builds with no context — use a path dockerfile with 'context', or drop 'context'`));
|
|
40
|
+
}
|
|
41
|
+
return Effect.void;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Resolve the Dockerfile path for a `context` source: always relative to the
|
|
45
|
+
* cwd (absolute paths pass through), defaulting to `${context}/Dockerfile`.
|
|
46
|
+
*/
|
|
47
|
+
const resolveContextPaths = Effect.fn(function* (source) {
|
|
48
|
+
const fs = yield* FileSystem.FileSystem;
|
|
49
|
+
const path = yield* Path.Path;
|
|
50
|
+
const context = path.resolve(source.context ?? ".");
|
|
51
|
+
const dockerfile = source.dockerfile
|
|
52
|
+
? path.resolve(source.dockerfile)
|
|
53
|
+
: path.join(context, "Dockerfile");
|
|
54
|
+
if (!(yield* fs.exists(context))) {
|
|
55
|
+
return yield* Effect.die(new Error(`Docker build context does not exist: ${context}`));
|
|
56
|
+
}
|
|
57
|
+
if (!(yield* fs.exists(dockerfile))) {
|
|
58
|
+
return yield* Effect.die(new Error(`Dockerfile does not exist: ${dockerfile}`));
|
|
59
|
+
}
|
|
60
|
+
return { context, dockerfile };
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Content hash for the sources whose identity is computable WITHOUT running
|
|
64
|
+
* a bundler:
|
|
65
|
+
*
|
|
66
|
+
* - `context` — hash of the build-context directory + Dockerfile content +
|
|
67
|
+
* platform.
|
|
68
|
+
* - `image` — hash of the image reference + platform (re-mirror only when
|
|
69
|
+
* the ref changes).
|
|
70
|
+
* - `main` — `undefined`: the hash comes from the bundle output, so it is
|
|
71
|
+
* only known inside `resolve`.
|
|
72
|
+
*
|
|
73
|
+
* Providers use this in `diff` to surface content drift (files changed under
|
|
74
|
+
* an unchanged `context` path) as an update.
|
|
75
|
+
*/
|
|
76
|
+
export const computeStaticSourceHash = Effect.fn(function* (source, platform) {
|
|
77
|
+
const kind = imageSourceKind(source);
|
|
78
|
+
if (kind === "image") {
|
|
79
|
+
return (yield* sha256Object({
|
|
80
|
+
image: source.image,
|
|
81
|
+
platform: platform ?? "linux/amd64",
|
|
82
|
+
})).slice(0, 16);
|
|
83
|
+
}
|
|
84
|
+
if (kind === "context") {
|
|
85
|
+
if (source.dockerfile !== undefined && isInlineDockerfile(source.dockerfile)) {
|
|
86
|
+
// Inline content builds with no context; an unresolved (Output)
|
|
87
|
+
// content can't be hashed at plan time — defer to reconcile.
|
|
88
|
+
if (typeof source.dockerfile.content !== "string")
|
|
89
|
+
return undefined;
|
|
90
|
+
return (yield* sha256Object({
|
|
91
|
+
dockerfile: source.dockerfile.content,
|
|
92
|
+
platform: platform ?? "linux/amd64",
|
|
93
|
+
})).slice(0, 16);
|
|
94
|
+
}
|
|
95
|
+
const fs = yield* FileSystem.FileSystem;
|
|
96
|
+
const { context, dockerfile } = yield* resolveContextPaths({
|
|
97
|
+
context: source.context,
|
|
98
|
+
dockerfile: source.dockerfile,
|
|
99
|
+
});
|
|
100
|
+
const contextHash = yield* hashDirectory({ cwd: context });
|
|
101
|
+
const dockerfileContent = yield* fs.readFileString(dockerfile);
|
|
102
|
+
return (yield* sha256Object({
|
|
103
|
+
contextHash,
|
|
104
|
+
dockerfile: dockerfileContent,
|
|
105
|
+
platform: platform ?? "linux/amd64",
|
|
106
|
+
})).slice(0, 16);
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* Init-time constructor for the image-source resolver. Resolves the services
|
|
112
|
+
* that are only available at provider-layer construction (Docker, the
|
|
113
|
+
* `.alchemy` directory, the rolldown virtual-entry plugin) and returns
|
|
114
|
+
* `resolve` (build/mirror + push to an {@link ImageRegistryTarget}), `hash`,
|
|
115
|
+
* and `watchMain`.
|
|
116
|
+
*/
|
|
117
|
+
export const makeContainerImageSource = Effect.gen(function* () {
|
|
118
|
+
const docker = yield* Docker;
|
|
119
|
+
const { dotAlchemy } = yield* AlchemyContext;
|
|
120
|
+
const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
|
|
121
|
+
/**
|
|
122
|
+
* The exact rolldown input/output options `bundleProgram` hands to
|
|
123
|
+
* `Bundle.build` — shared with {@link watchMain} so a dev watcher's
|
|
124
|
+
* `Bundle.watch` observes the identical module graph.
|
|
125
|
+
*/
|
|
126
|
+
const mainBundleOptions = (source, entry, cwd, plugins) => ({
|
|
127
|
+
inputOptions: {
|
|
128
|
+
...source.build?.input,
|
|
129
|
+
input: entry,
|
|
130
|
+
cwd,
|
|
131
|
+
platform: "node",
|
|
132
|
+
// The container runs on `bun`; keep `bun`/`bun:*` external (the
|
|
133
|
+
// runtime provides them) and resolve the `bun` export condition
|
|
134
|
+
// so `@effect/platform-bun` picks its Bun implementations.
|
|
135
|
+
external: [
|
|
136
|
+
"bun",
|
|
137
|
+
"bun:*",
|
|
138
|
+
...(source.build?.input?.external ?? []),
|
|
139
|
+
],
|
|
140
|
+
resolve: {
|
|
141
|
+
conditionNames: [...Bundle.BUN_CONDITION_NAMES],
|
|
142
|
+
...source.build?.input?.resolve,
|
|
143
|
+
},
|
|
144
|
+
plugins: [source.build?.input?.plugins, plugins],
|
|
145
|
+
},
|
|
146
|
+
outputOptions: {
|
|
147
|
+
...source.build?.output,
|
|
148
|
+
format: "esm",
|
|
149
|
+
sourcemap: source.build?.output?.sourcemap ?? false,
|
|
150
|
+
minify: source.build?.output?.minify ?? false,
|
|
151
|
+
entryFileNames: "index.mjs",
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
/** Bundle the Effect program behind a `main` source. */
|
|
155
|
+
const bundleProgram = Effect.fn(function* (options) {
|
|
156
|
+
const { source } = options;
|
|
157
|
+
const realMain = yield* resolveMainPath(source.main);
|
|
158
|
+
const cwd = yield* findCwdForBundle(realMain);
|
|
159
|
+
const buildBundle = Effect.fn(function* (entry, plugins) {
|
|
160
|
+
const opts = mainBundleOptions(source, entry, cwd, plugins);
|
|
161
|
+
return yield* Bundle.build(opts.inputOptions, opts.outputOptions, source.build);
|
|
162
|
+
});
|
|
163
|
+
const bundleOutput = options.isExternal
|
|
164
|
+
? yield* buildBundle(realMain)
|
|
165
|
+
: yield* buildBundle(realMain, virtualEntryPlugin(options.bootstrap));
|
|
166
|
+
// Return every emitted file (entry + shared chunks). Dynamic imports in
|
|
167
|
+
// the Bun HTTP server / AWS SDK split into chunks; dropping any of them
|
|
168
|
+
// crashes the container with `Cannot find module './chunk-XXX.js'`.
|
|
169
|
+
const files = bundleOutput.files.map((file) => ({
|
|
170
|
+
path: file.path,
|
|
171
|
+
content: typeof file.content === "string" ? new TextEncoder().encode(file.content) : file.content,
|
|
172
|
+
}));
|
|
173
|
+
return { files, hash: bundleOutput.hash };
|
|
174
|
+
});
|
|
175
|
+
/**
|
|
176
|
+
* Bundle a `main` source and compute its content-addressed code hash.
|
|
177
|
+
*
|
|
178
|
+
* The hash covers the FULL image identity: the bundle output (which
|
|
179
|
+
* includes the generated bootstrap entry, so bootstrap-template changes
|
|
180
|
+
* invalidate it), the generated Dockerfile, and the target platform.
|
|
181
|
+
* `resolve` and `hash` share this so the plan-time diff hash and the
|
|
182
|
+
* pushed image tag always agree.
|
|
183
|
+
*/
|
|
184
|
+
const computeMainCodeHash = Effect.fn(function* (options) {
|
|
185
|
+
const bundled = yield* bundleProgram({
|
|
186
|
+
source: options.source,
|
|
187
|
+
isExternal: options.isExternal,
|
|
188
|
+
bootstrap: options.bootstrap,
|
|
189
|
+
});
|
|
190
|
+
// A path-`dockerfile` environment is built as a separate local stage in
|
|
191
|
+
// `resolve`; hash its identity (context files + Dockerfile content)
|
|
192
|
+
// explicitly since the generated Dockerfile only references the local
|
|
193
|
+
// env tag. Inline environments flow through the generated Dockerfile
|
|
194
|
+
// text itself; `image` environments through its FROM line.
|
|
195
|
+
const df = options.source.dockerfile;
|
|
196
|
+
const isPathEnv = df !== undefined && !isInlineDockerfile(df);
|
|
197
|
+
let envIdentity = {};
|
|
198
|
+
if (isPathEnv) {
|
|
199
|
+
const fs = yield* FileSystem.FileSystem;
|
|
200
|
+
const { context, dockerfile } = yield* resolveContextPaths({
|
|
201
|
+
context: options.source.context,
|
|
202
|
+
dockerfile: df,
|
|
203
|
+
});
|
|
204
|
+
envIdentity = {
|
|
205
|
+
envContextHash: yield* hashDirectory({ cwd: context }),
|
|
206
|
+
envDockerfile: yield* fs.readFileString(dockerfile),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const dockerfile = generateDockerfile(options.source, options.port, isPathEnv ? "<env>" : undefined);
|
|
210
|
+
const codeHash = (yield* sha256Object({
|
|
211
|
+
bundleHash: bundled.hash,
|
|
212
|
+
dockerfile,
|
|
213
|
+
platform: options.platform,
|
|
214
|
+
...envIdentity,
|
|
215
|
+
})).slice(0, 16);
|
|
216
|
+
return { bundled, dockerfile, codeHash };
|
|
217
|
+
});
|
|
218
|
+
/**
|
|
219
|
+
* Generated Dockerfile for a bundled `main` program. The environment
|
|
220
|
+
* preamble is, in order of precedence: `envFrom` (a locally-built
|
|
221
|
+
* environment tag from a path-`dockerfile` two-stage build), inline
|
|
222
|
+
* `dockerfile` content (already resolved), the `image` ref, or the
|
|
223
|
+
* default bun base (`oven/bun` is Docker-Hub only — there is no
|
|
224
|
+
* `docker/library/bun` and no `public.ecr.aws/oven/bun`).
|
|
225
|
+
*/
|
|
226
|
+
const generateDockerfile = (source, port, envFrom) => {
|
|
227
|
+
const preamble = envFrom !== undefined
|
|
228
|
+
? `FROM ${envFrom}`
|
|
229
|
+
: source.dockerfile !== undefined && isInlineDockerfile(source.dockerfile)
|
|
230
|
+
? String(source.dockerfile.content).trimEnd()
|
|
231
|
+
: `FROM ${source.image ?? "oven/bun:1"}`;
|
|
232
|
+
const lines = [
|
|
233
|
+
preamble,
|
|
234
|
+
`WORKDIR /app`,
|
|
235
|
+
`COPY index.mjs /app/index.mjs`,
|
|
236
|
+
// Copy any additional rolldown chunks (`chunk-XXX.js`,
|
|
237
|
+
// `BunServices-YYY.js`, …). Non-trivial bundles always emit at
|
|
238
|
+
// least one; minimal bundles emit none and the COPY no-ops.
|
|
239
|
+
`COPY *.js /app/`,
|
|
240
|
+
];
|
|
241
|
+
if (port !== undefined) {
|
|
242
|
+
lines.push(`ENV PORT=${String(port)}`, `EXPOSE ${String(port)}`);
|
|
243
|
+
}
|
|
244
|
+
lines.push(`ENTRYPOINT ["bun", "/app/index.mjs"]`);
|
|
245
|
+
return `${lines.join("\n")}\n`;
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* Build (or mirror) and push an image to `target`, pushing with the
|
|
249
|
+
* target's credentials or — when it has none — the build machine's own
|
|
250
|
+
* Docker login.
|
|
251
|
+
*/
|
|
252
|
+
const push = (imageUri, credentials, platform) => (credentials === undefined
|
|
253
|
+
? docker.run([
|
|
254
|
+
"image",
|
|
255
|
+
"push",
|
|
256
|
+
...(platform !== undefined ? ["--platform", platform] : []),
|
|
257
|
+
imageUri,
|
|
258
|
+
])
|
|
259
|
+
: docker.image.push(imageUri, credentials, platform)).pipe(
|
|
260
|
+
// Pushes are idempotent; transient registry-transport failures
|
|
261
|
+
// (Docker Desktop's embedded proxy timing out under load, registry
|
|
262
|
+
// 503s, credential helper contention) resolve on a bounded re-attempt.
|
|
263
|
+
Effect.retry({
|
|
264
|
+
while: () => true,
|
|
265
|
+
schedule: Schedule.exponential("2 seconds"),
|
|
266
|
+
times: 3,
|
|
267
|
+
}));
|
|
268
|
+
const buildAndPush = Effect.fnUntraced(function* (target, options) {
|
|
269
|
+
const credentials = yield* target.credentials;
|
|
270
|
+
yield* docker.image.build({
|
|
271
|
+
tag: options.imageUri,
|
|
272
|
+
context: options.context,
|
|
273
|
+
file: options.dockerfile,
|
|
274
|
+
platform: options.platform,
|
|
275
|
+
});
|
|
276
|
+
yield* push(options.imageUri, credentials, options.platform);
|
|
277
|
+
return options.imageUri;
|
|
278
|
+
});
|
|
279
|
+
/**
|
|
280
|
+
* Resolve the image for a props bag: resolve the target repository,
|
|
281
|
+
* compute the content-addressed tag, then build/mirror + push only when
|
|
282
|
+
* that exact tag is not already in the registry (crash-safe convergence).
|
|
283
|
+
*/
|
|
284
|
+
const resolve = Effect.fnUntraced(function* (options, target) {
|
|
285
|
+
const { id, source, session } = options;
|
|
286
|
+
const platform = options.platform ?? "linux/amd64";
|
|
287
|
+
const kind = imageSourceKind(source);
|
|
288
|
+
if (kind === undefined) {
|
|
289
|
+
return yield* Effect.die(new Error(`'${id}' must declare exactly one image source: 'main' (bundled Effect program), 'context' (Dockerfile build), or 'image' (registry reference)`));
|
|
290
|
+
}
|
|
291
|
+
yield* validateImageSource(id, source);
|
|
292
|
+
const repositoryUri = yield* target.repositoryUri;
|
|
293
|
+
if (kind === "main") {
|
|
294
|
+
// Bundle → hash → (skip if pushed) → materialize generated Dockerfile
|
|
295
|
+
// → build + push.
|
|
296
|
+
const df = source.dockerfile;
|
|
297
|
+
if (df !== undefined && isInlineDockerfile(df) && typeof df.content !== "string") {
|
|
298
|
+
return yield* Effect.die(new Error(`'${id}': inline dockerfile content did not resolve to a string — Outputs in Dockerfile.inline must be resolvable at deploy time`));
|
|
299
|
+
}
|
|
300
|
+
yield* session.note(`Bundling ${id} program...`);
|
|
301
|
+
const { bundled, dockerfile, codeHash } = yield* computeMainCodeHash({
|
|
302
|
+
source: source,
|
|
303
|
+
isExternal: options.isExternal,
|
|
304
|
+
bootstrap: options.bootstrap,
|
|
305
|
+
port: options.port,
|
|
306
|
+
platform,
|
|
307
|
+
});
|
|
308
|
+
const imageUri = `${repositoryUri}:${codeHash}`;
|
|
309
|
+
if (yield* target.hasTag(codeHash)) {
|
|
310
|
+
return { imageUri, repositoryUri, codeHash };
|
|
311
|
+
}
|
|
312
|
+
// A path-`dockerfile` environment builds first as a local stage in the
|
|
313
|
+
// USER's context (so its COPYs resolve), then the generated Dockerfile
|
|
314
|
+
// FROMs the local tag and layers the bundle on top.
|
|
315
|
+
let envFrom;
|
|
316
|
+
if (df !== undefined && !isInlineDockerfile(df)) {
|
|
317
|
+
const env = yield* resolveContextPaths({
|
|
318
|
+
context: source.context,
|
|
319
|
+
dockerfile: df,
|
|
320
|
+
});
|
|
321
|
+
envFrom = `alchemy-env-${id.toLowerCase()}:${codeHash}`;
|
|
322
|
+
yield* session.note(`Building environment image for ${id}...`);
|
|
323
|
+
yield* docker.image.build({
|
|
324
|
+
context: env.context,
|
|
325
|
+
file: env.dockerfile,
|
|
326
|
+
tag: envFrom,
|
|
327
|
+
platform,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
const finalDockerfile = envFrom === undefined
|
|
331
|
+
? dockerfile
|
|
332
|
+
: generateDockerfile(source, options.port, envFrom);
|
|
333
|
+
const realMain = yield* resolveMainPath(source.main);
|
|
334
|
+
const contextDir = yield* getStableContextDir(realMain, dotAlchemy, `${id}-image`);
|
|
335
|
+
yield* docker.materialize({
|
|
336
|
+
context: contextDir,
|
|
337
|
+
dockerfile: finalDockerfile,
|
|
338
|
+
// Entry chunk becomes `index.mjs`; all other chunks keep their
|
|
339
|
+
// emitted `*.js` names so the entry's relative imports resolve.
|
|
340
|
+
files: bundled.files.map((file, index) => ({
|
|
341
|
+
path: index === 0 ? "index.mjs" : file.path,
|
|
342
|
+
content: file.content,
|
|
343
|
+
})),
|
|
344
|
+
});
|
|
345
|
+
yield* session.note(`Building container image ${imageUri}...`);
|
|
346
|
+
yield* buildAndPush(target, {
|
|
347
|
+
imageUri,
|
|
348
|
+
context: contextDir,
|
|
349
|
+
platform,
|
|
350
|
+
});
|
|
351
|
+
yield* session.note(`Pushed ${imageUri}`);
|
|
352
|
+
return { imageUri, repositoryUri, codeHash };
|
|
353
|
+
}
|
|
354
|
+
if (kind === "image") {
|
|
355
|
+
// Mirror: pull → tag → push. Content-addressed on the image ref, so
|
|
356
|
+
// an already-mirrored ref is a no-op.
|
|
357
|
+
const ref = source.image;
|
|
358
|
+
const codeHash = (yield* computeStaticSourceHash(source, platform));
|
|
359
|
+
const imageUri = `${repositoryUri}:${codeHash}`;
|
|
360
|
+
if (yield* target.hasTag(codeHash)) {
|
|
361
|
+
return { imageUri, repositoryUri, codeHash };
|
|
362
|
+
}
|
|
363
|
+
yield* session.note(`Pulling container image ${ref}...`);
|
|
364
|
+
// A registry pull can wedge indefinitely under Docker Hub throttling /
|
|
365
|
+
// credential-helper contention — bound it so a stuck pull fails the
|
|
366
|
+
// deploy loudly instead of hanging the plan.
|
|
367
|
+
yield* docker.image.pull(ref, platform).pipe(Effect.timeout("4 minutes"));
|
|
368
|
+
yield* docker.image.tag(ref, imageUri);
|
|
369
|
+
yield* session.note(`Pushing mirrored image ${imageUri}...`);
|
|
370
|
+
const credentials = yield* target.credentials;
|
|
371
|
+
// Pin the platform on push: with the containerd image store a bare
|
|
372
|
+
// push of a multi-arch tag sends every locally-present variant — a
|
|
373
|
+
// stale other-arch variant in the local cache would reach the
|
|
374
|
+
// registry and the container would crash with `exec format error`.
|
|
375
|
+
yield* push(imageUri, credentials, platform);
|
|
376
|
+
yield* session.note(`Pushed ${imageUri}`);
|
|
377
|
+
return { imageUri, repositoryUri, codeHash };
|
|
378
|
+
}
|
|
379
|
+
// kind === "context": docker build the user's Dockerfile — from a path
|
|
380
|
+
// (in their context) or from inline content (empty stable context).
|
|
381
|
+
const externalDf = source.dockerfile;
|
|
382
|
+
if (externalDf !== undefined && isInlineDockerfile(externalDf)) {
|
|
383
|
+
if (typeof externalDf.content !== "string") {
|
|
384
|
+
return yield* Effect.die(new Error(`'${id}': inline dockerfile content did not resolve to a string — Outputs in Dockerfile.inline must be resolvable at deploy time`));
|
|
385
|
+
}
|
|
386
|
+
const codeHash = (yield* computeStaticSourceHash(source, platform));
|
|
387
|
+
const imageUri = `${repositoryUri}:${codeHash}`;
|
|
388
|
+
if (yield* target.hasTag(codeHash)) {
|
|
389
|
+
return { imageUri, repositoryUri, codeHash };
|
|
390
|
+
}
|
|
391
|
+
const contextDir = yield* getStableContextDir(dotAlchemy, dotAlchemy, `${id}-image`);
|
|
392
|
+
yield* docker.materialize({
|
|
393
|
+
context: contextDir,
|
|
394
|
+
dockerfile: externalDf.content,
|
|
395
|
+
files: [],
|
|
396
|
+
});
|
|
397
|
+
yield* session.note(`Building container image ${imageUri}...`);
|
|
398
|
+
yield* buildAndPush(target, {
|
|
399
|
+
imageUri,
|
|
400
|
+
context: contextDir,
|
|
401
|
+
platform,
|
|
402
|
+
});
|
|
403
|
+
yield* session.note(`Pushed ${imageUri}`);
|
|
404
|
+
return { imageUri, repositoryUri, codeHash };
|
|
405
|
+
}
|
|
406
|
+
const { context, dockerfile } = yield* resolveContextPaths({
|
|
407
|
+
context: source.context,
|
|
408
|
+
dockerfile: externalDf,
|
|
409
|
+
});
|
|
410
|
+
const codeHash = (yield* computeStaticSourceHash(source, platform));
|
|
411
|
+
const imageUri = `${repositoryUri}:${codeHash}`;
|
|
412
|
+
if (yield* target.hasTag(codeHash)) {
|
|
413
|
+
return { imageUri, repositoryUri, codeHash };
|
|
414
|
+
}
|
|
415
|
+
yield* session.note(`Building container image ${imageUri}...`);
|
|
416
|
+
yield* buildAndPush(target, {
|
|
417
|
+
imageUri,
|
|
418
|
+
context,
|
|
419
|
+
dockerfile,
|
|
420
|
+
platform,
|
|
421
|
+
});
|
|
422
|
+
yield* session.note(`Pushed ${imageUri}`);
|
|
423
|
+
return { imageUri, repositoryUri, codeHash };
|
|
424
|
+
});
|
|
425
|
+
/**
|
|
426
|
+
* Content hash for ANY source kind without building or pushing an image.
|
|
427
|
+
*
|
|
428
|
+
* For `main` sources this runs the bundler (bootstrap entry included) so
|
|
429
|
+
* the hash reflects the exact image `resolve` would push — bootstrap
|
|
430
|
+
* template changes and user-code edits both surface as drift. Providers
|
|
431
|
+
* call this from `diff` and compare against `output.code.hash`; static
|
|
432
|
+
* sources (`context` / `image`) delegate to
|
|
433
|
+
* {@link computeStaticSourceHash}.
|
|
434
|
+
*/
|
|
435
|
+
const hash = Effect.fn(function* (options) {
|
|
436
|
+
const platform = options.platform ?? "linux/amd64";
|
|
437
|
+
if (imageSourceKind(options.source) === "main") {
|
|
438
|
+
// Unresolved inline environment content (an Output) can't be hashed
|
|
439
|
+
// at plan time — return undefined so the diff defers to reconcile.
|
|
440
|
+
const df = options.source.dockerfile;
|
|
441
|
+
if (df !== undefined && isInlineDockerfile(df) && typeof df.content !== "string") {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
const { codeHash } = yield* computeMainCodeHash({
|
|
445
|
+
source: options.source,
|
|
446
|
+
isExternal: options.isExternal,
|
|
447
|
+
bootstrap: options.bootstrap,
|
|
448
|
+
port: options.port,
|
|
449
|
+
platform,
|
|
450
|
+
});
|
|
451
|
+
return codeHash;
|
|
452
|
+
}
|
|
453
|
+
return yield* computeStaticSourceHash(options.source, platform);
|
|
454
|
+
});
|
|
455
|
+
/**
|
|
456
|
+
* The rolldown watch plan for a `main` source — the exact input/output
|
|
457
|
+
* options `resolve` bundles with, reusable verbatim with `Bundle.watch`
|
|
458
|
+
* so a dev watcher observes the identical module graph and rebuild
|
|
459
|
+
* triggers.
|
|
460
|
+
*/
|
|
461
|
+
const watchMain = Effect.fn(function* (options) {
|
|
462
|
+
const realMain = yield* resolveMainPath(options.source.main);
|
|
463
|
+
const cwd = yield* findCwdForBundle(realMain);
|
|
464
|
+
const opts = mainBundleOptions(options.source, realMain, cwd, options.isExternal ? undefined : virtualEntryPlugin(options.bootstrap));
|
|
465
|
+
return { ...opts, extra: options.source.build };
|
|
466
|
+
});
|
|
467
|
+
return { resolve, hash, watchMain };
|
|
468
|
+
});
|
|
469
|
+
//# sourceMappingURL=ImageSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageSource.js","sourceRoot":"","sources":["../src/ImageSource.ts"],"names":[],"mappings":"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"}
|
package/lib/Network.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as Provider from "alchemy/Provider";
|
|
2
|
+
import { Resource } from "alchemy/Resource";
|
|
3
|
+
import { Docker } from "./Docker.ts";
|
|
4
|
+
import type { Providers } from "./Providers.ts";
|
|
5
|
+
export interface NetworkProps {
|
|
6
|
+
/**
|
|
7
|
+
* Docker network name.
|
|
8
|
+
*
|
|
9
|
+
* @default Generated from stack, stage, logical id, and instance id.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
/** Network driver. @default "bridge" */
|
|
13
|
+
driver?: "bridge" | "host" | "none" | "overlay" | "macvlan" | (string & {});
|
|
14
|
+
/** Enable IPv6 on the network. @default false */
|
|
15
|
+
enableIPv6?: boolean;
|
|
16
|
+
/** Network labels. */
|
|
17
|
+
labels?: Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* The engine the network is created on: a Docker context name, a
|
|
20
|
+
* `Docker.Context` resource, or a `Docker.Swarm` — overlay networks
|
|
21
|
+
* require a swarm manager, and passing the swarm orders the network after
|
|
22
|
+
* the swarm is initialized.
|
|
23
|
+
*/
|
|
24
|
+
context?: Docker.EngineRef;
|
|
25
|
+
}
|
|
26
|
+
export interface Network extends Resource<"Docker.Network", NetworkProps, {
|
|
27
|
+
/** Docker network ID. */
|
|
28
|
+
id: string;
|
|
29
|
+
/** Docker network name. */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Network driver. */
|
|
32
|
+
driver: string;
|
|
33
|
+
/** Whether IPv6 is enabled. */
|
|
34
|
+
enableIPv6: boolean;
|
|
35
|
+
/** Labels reported by Docker. */
|
|
36
|
+
labels: Record<string, string>;
|
|
37
|
+
/** Creation timestamp in milliseconds since epoch. */
|
|
38
|
+
createdAt: number;
|
|
39
|
+
}, never, Providers> {
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A Docker network managed through the active Docker context.
|
|
43
|
+
*
|
|
44
|
+
* Existing same-name networks are treated as foreign unless the engine is
|
|
45
|
+
* explicitly allowed to adopt them with `--adopt` or `adopt(true)`.
|
|
46
|
+
*
|
|
47
|
+
*
|
|
48
|
+
* ### Creating Networks
|
|
49
|
+
* **Example:** Basic bridge network
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const network = yield* Docker.Network("app-network", {
|
|
52
|
+
* name: "app-network",
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* ### Adoption
|
|
57
|
+
* **Example:** Adopt a pre-existing network
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const network = yield* Docker.Network("app-network", {
|
|
60
|
+
* name: "shared-app-network",
|
|
61
|
+
* }).pipe(adopt(true));
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @resource
|
|
65
|
+
* @product Network
|
|
66
|
+
*/
|
|
67
|
+
export declare const Network: import("alchemy/Resource").ResourceClass<Network>;
|
|
68
|
+
export declare const NetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Network>, never, Docker | import("alchemy/Stack").Stack | import("alchemy/Stage").Stage>;
|
|
69
|
+
export declare const toNetworkAttributes: (info: Docker.Network) => Network["Attributes"];
|
|
70
|
+
//# sourceMappingURL=Network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../src/Network.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EAAE,MAAM,EAA+C,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5E,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ,CACvC,gBAAgB,EAChB,YAAY,EACZ;IACE,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,CACV;CAAG;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,OAAO,mDAAsC,CAAC;AAE3D,eAAO,MAAM,eAAe,+IAoEzB,CAAC;AAYJ,eAAO,MAAM,mBAAmB,SAAU,MAAM,CAAC,OAAO,KAAG,OAAO,CAAC,YAAY,CAO7E,CAAC"}
|