alchemy 0.35.1 → 0.37.0
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/bin/alchemy.mjs +45102 -45100
- package/bin/alchemy.ts +1 -1
- package/bin/create-alchemy.ts +10 -4
- package/lib/cloudflare/bundle/bundle-worker.js +1 -1
- package/lib/cloudflare/bundle/bundle-worker.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +0 -3
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/do-state-store/internal.d.ts.map +1 -1
- package/lib/cloudflare/do-state-store/internal.js +35 -28
- package/lib/cloudflare/do-state-store/internal.js.map +1 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +28 -13
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +8 -5
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +48 -11
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +18 -12
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +74 -68
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/docker/api.d.ts +185 -0
- package/lib/docker/api.d.ts.map +1 -0
- package/lib/docker/api.js +288 -0
- package/lib/docker/api.js.map +1 -0
- package/lib/docker/container.d.ts +147 -0
- package/lib/docker/container.d.ts.map +1 -0
- package/lib/docker/container.js +109 -0
- package/lib/docker/container.js.map +1 -0
- package/lib/docker/image.d.ts +92 -0
- package/lib/docker/image.d.ts.map +1 -0
- package/lib/docker/image.js +92 -0
- package/lib/docker/image.js.map +1 -0
- package/lib/docker/index.d.ts +7 -0
- package/lib/docker/index.d.ts.map +1 -0
- package/lib/docker/index.js +7 -0
- package/lib/docker/index.js.map +1 -0
- package/lib/docker/network.d.ts +62 -0
- package/lib/docker/network.d.ts.map +1 -0
- package/lib/docker/network.js +49 -0
- package/lib/docker/network.js.map +1 -0
- package/lib/docker/remote-image.d.ts +45 -0
- package/lib/docker/remote-image.d.ts.map +1 -0
- package/lib/docker/remote-image.js +36 -0
- package/lib/docker/remote-image.js.map +1 -0
- package/lib/docker/volume.d.ts +83 -0
- package/lib/docker/volume.d.ts.map +1 -0
- package/lib/docker/volume.js +76 -0
- package/lib/docker/volume.js.map +1 -0
- package/lib/os/exec.d.ts +19 -1
- package/lib/os/exec.d.ts.map +1 -1
- package/lib/os/exec.js +28 -4
- package/lib/os/exec.js.map +1 -1
- package/lib/stripe/price.d.ts +24 -0
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +30 -0
- package/lib/stripe/price.js.map +1 -1
- package/lib/util/cli.d.ts.map +1 -1
- package/lib/util/cli.js +1 -1
- package/lib/util/cli.js.map +1 -1
- package/package.json +5 -1
- package/src/cloudflare/bundle/bundle-worker.ts +1 -1
- package/src/cloudflare/d1-database.ts +0 -4
- package/src/cloudflare/do-state-store/internal.ts +45 -29
- package/src/cloudflare/website.ts +40 -16
- package/src/cloudflare/worker-metadata.ts +101 -19
- package/src/cloudflare/worker.ts +104 -148
- package/src/docker/api.ts +365 -0
- package/src/docker/container.ts +267 -0
- package/src/docker/image.ts +200 -0
- package/src/docker/index.ts +6 -0
- package/src/docker/network.ts +101 -0
- package/src/docker/remote-image.ts +83 -0
- package/src/docker/volume.ts +154 -0
- package/src/os/exec.ts +48 -6
- package/src/stripe/price.ts +47 -1
- package/src/util/cli.ts +1 -3
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for Docker API requests
|
|
3
|
+
*/
|
|
4
|
+
export interface DockerApiOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Custom path to Docker binary
|
|
7
|
+
*/
|
|
8
|
+
dockerPath?: string;
|
|
9
|
+
}
|
|
10
|
+
type VolumeInfo = {
|
|
11
|
+
CreatedAt: string;
|
|
12
|
+
Driver: string;
|
|
13
|
+
Labels: Record<string, string>;
|
|
14
|
+
Mountpoint: string;
|
|
15
|
+
Name: string;
|
|
16
|
+
Options: Record<string, string>;
|
|
17
|
+
Scope: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Docker API client that wraps Docker CLI commands
|
|
21
|
+
*/
|
|
22
|
+
export declare class DockerApi {
|
|
23
|
+
/** Path to Docker CLI */
|
|
24
|
+
readonly dockerPath: string;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new Docker API client
|
|
27
|
+
*
|
|
28
|
+
* @param options Docker API options
|
|
29
|
+
*/
|
|
30
|
+
constructor(options?: DockerApiOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Run a Docker CLI command
|
|
33
|
+
*
|
|
34
|
+
* @param args Command arguments to pass to Docker CLI
|
|
35
|
+
* @returns Result of the command
|
|
36
|
+
*/
|
|
37
|
+
exec(args: string[]): Promise<{
|
|
38
|
+
stdout: string;
|
|
39
|
+
stderr: string;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Check if Docker daemon is running
|
|
43
|
+
*
|
|
44
|
+
* @returns True if Docker daemon is running
|
|
45
|
+
*/
|
|
46
|
+
isRunning(): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Pull Docker image
|
|
49
|
+
*
|
|
50
|
+
* @param image Image name and tag
|
|
51
|
+
* @returns Result of the pull command
|
|
52
|
+
*/
|
|
53
|
+
pullImage(image: string): Promise<{
|
|
54
|
+
stdout: string;
|
|
55
|
+
stderr: string;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Build Docker image
|
|
59
|
+
*
|
|
60
|
+
* @param path Path to Dockerfile directory
|
|
61
|
+
* @param tag Tag for the image
|
|
62
|
+
* @param buildArgs Build arguments
|
|
63
|
+
* @returns Result of the build command
|
|
64
|
+
*/
|
|
65
|
+
buildImage(path: string, tag: string, buildArgs?: Record<string, string>): Promise<{
|
|
66
|
+
stdout: string;
|
|
67
|
+
stderr: string;
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* List Docker images
|
|
71
|
+
*
|
|
72
|
+
* @returns JSON string containing image list
|
|
73
|
+
*/
|
|
74
|
+
listImages(): Promise<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Create Docker container
|
|
77
|
+
*
|
|
78
|
+
* @param image Image name
|
|
79
|
+
* @param name Container name
|
|
80
|
+
* @param options Container options
|
|
81
|
+
* @returns Container ID
|
|
82
|
+
*/
|
|
83
|
+
createContainer(image: string, name: string, options?: {
|
|
84
|
+
ports?: Record<string, string>;
|
|
85
|
+
env?: Record<string, string>;
|
|
86
|
+
volumes?: Record<string, string>;
|
|
87
|
+
cmd?: string[];
|
|
88
|
+
}): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Start Docker container
|
|
91
|
+
*
|
|
92
|
+
* @param containerId Container ID or name
|
|
93
|
+
*/
|
|
94
|
+
startContainer(containerId: string): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Stop Docker container
|
|
97
|
+
*
|
|
98
|
+
* @param containerId Container ID or name
|
|
99
|
+
*/
|
|
100
|
+
stopContainer(containerId: string): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Remove Docker container
|
|
103
|
+
*
|
|
104
|
+
* @param containerId Container ID or name
|
|
105
|
+
* @param force Force removal
|
|
106
|
+
*/
|
|
107
|
+
removeContainer(containerId: string, force?: boolean): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Get container logs
|
|
110
|
+
*
|
|
111
|
+
* @param containerId Container ID or name
|
|
112
|
+
* @returns Container logs
|
|
113
|
+
*/
|
|
114
|
+
getContainerLogs(containerId: string): Promise<string>;
|
|
115
|
+
/**
|
|
116
|
+
* Check if a container exists
|
|
117
|
+
*
|
|
118
|
+
* @param containerId Container ID or name
|
|
119
|
+
* @returns True if container exists
|
|
120
|
+
*/
|
|
121
|
+
containerExists(containerId: string): Promise<boolean>;
|
|
122
|
+
/**
|
|
123
|
+
* Create Docker network
|
|
124
|
+
*
|
|
125
|
+
* @param name Network name
|
|
126
|
+
* @param driver Network driver
|
|
127
|
+
* @returns Network ID
|
|
128
|
+
*/
|
|
129
|
+
createNetwork(name: string, driver?: string): Promise<string>;
|
|
130
|
+
/**
|
|
131
|
+
* Remove Docker network
|
|
132
|
+
*
|
|
133
|
+
* @param networkId Network ID or name
|
|
134
|
+
*/
|
|
135
|
+
removeNetwork(networkId: string): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Connect container to network
|
|
138
|
+
*
|
|
139
|
+
* @param containerId Container ID or name
|
|
140
|
+
* @param networkId Network ID or name
|
|
141
|
+
*/
|
|
142
|
+
connectNetwork(containerId: string, networkId: string, options?: {
|
|
143
|
+
aliases?: string[];
|
|
144
|
+
}): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Disconnect container from network
|
|
147
|
+
*
|
|
148
|
+
* @param containerId Container ID or name
|
|
149
|
+
* @param networkId Network ID or name
|
|
150
|
+
*/
|
|
151
|
+
disconnectNetwork(containerId: string, networkId: string): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Create Docker volume
|
|
154
|
+
*
|
|
155
|
+
* @param name Volume name
|
|
156
|
+
* @param driver Volume driver
|
|
157
|
+
* @param driverOpts Driver options
|
|
158
|
+
* @param labels Volume labels
|
|
159
|
+
* @returns Volume name
|
|
160
|
+
*/
|
|
161
|
+
createVolume(name: string, driver?: string, driverOpts?: Record<string, string>, labels?: Record<string, string>): Promise<string>;
|
|
162
|
+
/**
|
|
163
|
+
* Remove Docker volume
|
|
164
|
+
*
|
|
165
|
+
* @param volumeName Volume name
|
|
166
|
+
* @param force Force removal of the volume
|
|
167
|
+
*/
|
|
168
|
+
removeVolume(volumeName: string, force?: boolean): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Get Docker volume information
|
|
171
|
+
*
|
|
172
|
+
* @param volumeName Volume name
|
|
173
|
+
* @returns Volume details in JSON format
|
|
174
|
+
*/
|
|
175
|
+
inspectVolume(volumeName: string): Promise<VolumeInfo[]>;
|
|
176
|
+
/**
|
|
177
|
+
* Check if a volume exists
|
|
178
|
+
*
|
|
179
|
+
* @param volumeName Volume name
|
|
180
|
+
* @returns True if volume exists
|
|
181
|
+
*/
|
|
182
|
+
volumeExists(volumeName: string): Promise<boolean>;
|
|
183
|
+
}
|
|
184
|
+
export {};
|
|
185
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/docker/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { exec } from "../os/exec.js";
|
|
2
|
+
/**
|
|
3
|
+
* Docker API client that wraps Docker CLI commands
|
|
4
|
+
*/
|
|
5
|
+
export class DockerApi {
|
|
6
|
+
/** Path to Docker CLI */
|
|
7
|
+
dockerPath;
|
|
8
|
+
/**
|
|
9
|
+
* Create a new Docker API client
|
|
10
|
+
*
|
|
11
|
+
* @param options Docker API options
|
|
12
|
+
*/
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.dockerPath = options.dockerPath || "docker";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run a Docker CLI command
|
|
18
|
+
*
|
|
19
|
+
* @param args Command arguments to pass to Docker CLI
|
|
20
|
+
* @returns Result of the command
|
|
21
|
+
*/
|
|
22
|
+
async exec(args) {
|
|
23
|
+
const command = `${this.dockerPath} ${args.join(" ")}`;
|
|
24
|
+
const result = (await exec(command, {
|
|
25
|
+
captureOutput: true,
|
|
26
|
+
shell: true,
|
|
27
|
+
env: process.env,
|
|
28
|
+
}));
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if Docker daemon is running
|
|
33
|
+
*
|
|
34
|
+
* @returns True if Docker daemon is running
|
|
35
|
+
*/
|
|
36
|
+
async isRunning() {
|
|
37
|
+
try {
|
|
38
|
+
// Use a quick, lightweight command to test if Docker is running
|
|
39
|
+
await this.exec(["version", "--format", "{{.Server.Version}}"]);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.log(`Docker daemon not running: ${error instanceof Error ? error.message : String(error)}`);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Pull Docker image
|
|
49
|
+
*
|
|
50
|
+
* @param image Image name and tag
|
|
51
|
+
* @returns Result of the pull command
|
|
52
|
+
*/
|
|
53
|
+
async pullImage(image) {
|
|
54
|
+
return this.exec(["pull", image]);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build Docker image
|
|
58
|
+
*
|
|
59
|
+
* @param path Path to Dockerfile directory
|
|
60
|
+
* @param tag Tag for the image
|
|
61
|
+
* @param buildArgs Build arguments
|
|
62
|
+
* @returns Result of the build command
|
|
63
|
+
*/
|
|
64
|
+
async buildImage(path, tag, buildArgs = {}) {
|
|
65
|
+
const args = ["build", "-t", tag, path];
|
|
66
|
+
for (const [key, value] of Object.entries(buildArgs)) {
|
|
67
|
+
args.push("--build-arg", `${key}=${value}`);
|
|
68
|
+
}
|
|
69
|
+
return this.exec(args);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* List Docker images
|
|
73
|
+
*
|
|
74
|
+
* @returns JSON string containing image list
|
|
75
|
+
*/
|
|
76
|
+
async listImages() {
|
|
77
|
+
const { stdout } = await this.exec(["images", "--format", "{{json .}}"]);
|
|
78
|
+
return stdout;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create Docker container
|
|
82
|
+
*
|
|
83
|
+
* @param image Image name
|
|
84
|
+
* @param name Container name
|
|
85
|
+
* @param options Container options
|
|
86
|
+
* @returns Container ID
|
|
87
|
+
*/
|
|
88
|
+
async createContainer(image, name, options = {}) {
|
|
89
|
+
const args = ["create", "--name", name];
|
|
90
|
+
// Add port mappings
|
|
91
|
+
if (options.ports) {
|
|
92
|
+
for (const [hostPort, containerPort] of Object.entries(options.ports)) {
|
|
93
|
+
args.push("-p", `${hostPort}:${containerPort}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Add environment variables
|
|
97
|
+
if (options.env) {
|
|
98
|
+
for (const [key, value] of Object.entries(options.env)) {
|
|
99
|
+
args.push("-e", `${key}=${value}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Add volume mappings
|
|
103
|
+
if (options.volumes) {
|
|
104
|
+
for (const [hostPath, containerPath] of Object.entries(options.volumes)) {
|
|
105
|
+
args.push("-v", `${hostPath}:${containerPath}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
args.push(image);
|
|
109
|
+
// Add command if specified
|
|
110
|
+
if (options.cmd && options.cmd.length > 0) {
|
|
111
|
+
args.push(...options.cmd);
|
|
112
|
+
}
|
|
113
|
+
const { stdout } = await this.exec(args);
|
|
114
|
+
return stdout.trim();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Start Docker container
|
|
118
|
+
*
|
|
119
|
+
* @param containerId Container ID or name
|
|
120
|
+
*/
|
|
121
|
+
async startContainer(containerId) {
|
|
122
|
+
await this.exec(["start", containerId]);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Stop Docker container
|
|
126
|
+
*
|
|
127
|
+
* @param containerId Container ID or name
|
|
128
|
+
*/
|
|
129
|
+
async stopContainer(containerId) {
|
|
130
|
+
await this.exec(["stop", containerId]);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Remove Docker container
|
|
134
|
+
*
|
|
135
|
+
* @param containerId Container ID or name
|
|
136
|
+
* @param force Force removal
|
|
137
|
+
*/
|
|
138
|
+
async removeContainer(containerId, force = false) {
|
|
139
|
+
const args = ["rm"];
|
|
140
|
+
if (force) {
|
|
141
|
+
args.push("-f");
|
|
142
|
+
}
|
|
143
|
+
args.push(containerId);
|
|
144
|
+
await this.exec(args);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get container logs
|
|
148
|
+
*
|
|
149
|
+
* @param containerId Container ID or name
|
|
150
|
+
* @returns Container logs
|
|
151
|
+
*/
|
|
152
|
+
async getContainerLogs(containerId) {
|
|
153
|
+
const { stdout } = await this.exec(["logs", containerId]);
|
|
154
|
+
return stdout;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check if a container exists
|
|
158
|
+
*
|
|
159
|
+
* @param containerId Container ID or name
|
|
160
|
+
* @returns True if container exists
|
|
161
|
+
*/
|
|
162
|
+
async containerExists(containerId) {
|
|
163
|
+
try {
|
|
164
|
+
await this.exec(["inspect", containerId]);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
catch (_error) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create Docker network
|
|
173
|
+
*
|
|
174
|
+
* @param name Network name
|
|
175
|
+
* @param driver Network driver
|
|
176
|
+
* @returns Network ID
|
|
177
|
+
*/
|
|
178
|
+
async createNetwork(name, driver = "bridge") {
|
|
179
|
+
const { stdout } = await this.exec([
|
|
180
|
+
"network",
|
|
181
|
+
"create",
|
|
182
|
+
"--driver",
|
|
183
|
+
driver,
|
|
184
|
+
name,
|
|
185
|
+
]);
|
|
186
|
+
return stdout.trim();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Remove Docker network
|
|
190
|
+
*
|
|
191
|
+
* @param networkId Network ID or name
|
|
192
|
+
*/
|
|
193
|
+
async removeNetwork(networkId) {
|
|
194
|
+
await this.exec(["network", "rm", networkId]);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Connect container to network
|
|
198
|
+
*
|
|
199
|
+
* @param containerId Container ID or name
|
|
200
|
+
* @param networkId Network ID or name
|
|
201
|
+
*/
|
|
202
|
+
async connectNetwork(containerId, networkId, options = {}) {
|
|
203
|
+
const args = ["network", "connect"];
|
|
204
|
+
if (options.aliases) {
|
|
205
|
+
for (const alias of options.aliases) {
|
|
206
|
+
args.push("--alias", alias);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
args.push(networkId, containerId);
|
|
210
|
+
await this.exec(args);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Disconnect container from network
|
|
214
|
+
*
|
|
215
|
+
* @param containerId Container ID or name
|
|
216
|
+
* @param networkId Network ID or name
|
|
217
|
+
*/
|
|
218
|
+
async disconnectNetwork(containerId, networkId) {
|
|
219
|
+
await this.exec(["network", "disconnect", networkId, containerId]);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create Docker volume
|
|
223
|
+
*
|
|
224
|
+
* @param name Volume name
|
|
225
|
+
* @param driver Volume driver
|
|
226
|
+
* @param driverOpts Driver options
|
|
227
|
+
* @param labels Volume labels
|
|
228
|
+
* @returns Volume name
|
|
229
|
+
*/
|
|
230
|
+
async createVolume(name, driver = "local", driverOpts = {}, labels = {}) {
|
|
231
|
+
const args = ["volume", "create", "--name", name, "--driver", driver];
|
|
232
|
+
// Add driver options
|
|
233
|
+
for (const [key, value] of Object.entries(driverOpts)) {
|
|
234
|
+
args.push("--opt", `${key}=${value}`);
|
|
235
|
+
}
|
|
236
|
+
// Add labels
|
|
237
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
238
|
+
args.push("--label", `${key}=${value}`);
|
|
239
|
+
}
|
|
240
|
+
const { stdout } = await this.exec(args);
|
|
241
|
+
return stdout.trim();
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Remove Docker volume
|
|
245
|
+
*
|
|
246
|
+
* @param volumeName Volume name
|
|
247
|
+
* @param force Force removal of the volume
|
|
248
|
+
*/
|
|
249
|
+
async removeVolume(volumeName, force = false) {
|
|
250
|
+
const args = ["volume", "rm"];
|
|
251
|
+
if (force) {
|
|
252
|
+
args.push("--force");
|
|
253
|
+
}
|
|
254
|
+
args.push(volumeName);
|
|
255
|
+
await this.exec(args);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get Docker volume information
|
|
259
|
+
*
|
|
260
|
+
* @param volumeName Volume name
|
|
261
|
+
* @returns Volume details in JSON format
|
|
262
|
+
*/
|
|
263
|
+
async inspectVolume(volumeName) {
|
|
264
|
+
const { stdout } = await this.exec(["volume", "inspect", volumeName]);
|
|
265
|
+
try {
|
|
266
|
+
return JSON.parse(stdout.trim());
|
|
267
|
+
}
|
|
268
|
+
catch (_error) {
|
|
269
|
+
return [];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Check if a volume exists
|
|
274
|
+
*
|
|
275
|
+
* @param volumeName Volume name
|
|
276
|
+
* @returns True if volume exists
|
|
277
|
+
*/
|
|
278
|
+
async volumeExists(volumeName) {
|
|
279
|
+
try {
|
|
280
|
+
await this.inspectVolume(volumeName);
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
catch (_error) {
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/docker/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import { Resource } from "../resource.ts";
|
|
3
|
+
import type { Image } from "./image.ts";
|
|
4
|
+
import type { RemoteImage } from "./remote-image.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Port mapping configuration
|
|
7
|
+
*/
|
|
8
|
+
export interface PortMapping {
|
|
9
|
+
/**
|
|
10
|
+
* External port on the host
|
|
11
|
+
*/
|
|
12
|
+
external: number | string;
|
|
13
|
+
/**
|
|
14
|
+
* Internal port inside the container
|
|
15
|
+
*/
|
|
16
|
+
internal: number | string;
|
|
17
|
+
/**
|
|
18
|
+
* Protocol (tcp or udp)
|
|
19
|
+
*/
|
|
20
|
+
protocol?: "tcp" | "udp";
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Volume mapping configuration
|
|
24
|
+
*/
|
|
25
|
+
export interface VolumeMapping {
|
|
26
|
+
/**
|
|
27
|
+
* Host path
|
|
28
|
+
*/
|
|
29
|
+
hostPath: string;
|
|
30
|
+
/**
|
|
31
|
+
* Container path
|
|
32
|
+
*/
|
|
33
|
+
containerPath: string;
|
|
34
|
+
/**
|
|
35
|
+
* Read-only flag
|
|
36
|
+
*/
|
|
37
|
+
readOnly?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Network mapping configuration
|
|
41
|
+
*/
|
|
42
|
+
export interface NetworkMapping {
|
|
43
|
+
/**
|
|
44
|
+
* Network name or ID
|
|
45
|
+
*/
|
|
46
|
+
name: string;
|
|
47
|
+
/**
|
|
48
|
+
* Aliases for the container in the network
|
|
49
|
+
*/
|
|
50
|
+
aliases?: string[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Properties for creating a Docker container
|
|
54
|
+
*/
|
|
55
|
+
export interface ContainerProps {
|
|
56
|
+
/**
|
|
57
|
+
* Image to use for the container
|
|
58
|
+
* Can be an Alchemy Image or RemoteImage resource or a string image reference
|
|
59
|
+
*/
|
|
60
|
+
image: Image | RemoteImage | string;
|
|
61
|
+
/**
|
|
62
|
+
* Container name
|
|
63
|
+
*/
|
|
64
|
+
name?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Command to run in the container
|
|
67
|
+
*/
|
|
68
|
+
command?: string[];
|
|
69
|
+
/**
|
|
70
|
+
* Environment variables
|
|
71
|
+
*/
|
|
72
|
+
environment?: Record<string, string>;
|
|
73
|
+
/**
|
|
74
|
+
* Port mappings
|
|
75
|
+
*/
|
|
76
|
+
ports?: PortMapping[];
|
|
77
|
+
/**
|
|
78
|
+
* Volume mappings
|
|
79
|
+
*/
|
|
80
|
+
volumes?: VolumeMapping[];
|
|
81
|
+
/**
|
|
82
|
+
* Restart policy
|
|
83
|
+
*/
|
|
84
|
+
restart?: "no" | "always" | "on-failure" | "unless-stopped";
|
|
85
|
+
/**
|
|
86
|
+
* Networks to connect to
|
|
87
|
+
*/
|
|
88
|
+
networks?: NetworkMapping[];
|
|
89
|
+
/**
|
|
90
|
+
* Whether to remove the container when it exits
|
|
91
|
+
*/
|
|
92
|
+
removeOnExit?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Start the container after creation
|
|
95
|
+
*/
|
|
96
|
+
start?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Docker Container resource
|
|
100
|
+
*/
|
|
101
|
+
export interface Container extends Resource<"docker::Container">, ContainerProps {
|
|
102
|
+
/**
|
|
103
|
+
* Container ID
|
|
104
|
+
*/
|
|
105
|
+
id: string;
|
|
106
|
+
/**
|
|
107
|
+
* Container state
|
|
108
|
+
*/
|
|
109
|
+
state?: "created" | "running" | "paused" | "stopped" | "exited";
|
|
110
|
+
/**
|
|
111
|
+
* Time when the container was created
|
|
112
|
+
*/
|
|
113
|
+
createdAt: number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create and manage a Docker Container
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* // Create a simple Nginx container
|
|
120
|
+
* const webContainer = await Container("web", {
|
|
121
|
+
* image: "nginx:latest",
|
|
122
|
+
* ports: [
|
|
123
|
+
* { external: 8080, internal: 80 }
|
|
124
|
+
* ],
|
|
125
|
+
* start: true
|
|
126
|
+
* });
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* // Create a container with environment variables and volume mounts
|
|
130
|
+
* const appContainer = await Container("app", {
|
|
131
|
+
* image: customImage, // Using an Alchemy RemoteImage resource
|
|
132
|
+
* environment: {
|
|
133
|
+
* NODE_ENV: "production",
|
|
134
|
+
* API_KEY: "secret-key"
|
|
135
|
+
* },
|
|
136
|
+
* volumes: [
|
|
137
|
+
* { hostPath: "./data", containerPath: "/app/data" }
|
|
138
|
+
* ],
|
|
139
|
+
* ports: [
|
|
140
|
+
* { external: 3000, internal: 3000 }
|
|
141
|
+
* ],
|
|
142
|
+
* restart: "always",
|
|
143
|
+
* start: true
|
|
144
|
+
* });
|
|
145
|
+
*/
|
|
146
|
+
export declare const Container: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<Container>, id: string, props: ContainerProps) => Promise<Container>);
|
|
147
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/docker/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IAEpC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAE5B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SACf,SAAQ,QAAQ,CAAC,mBAAmB,CAAC,EACnC,cAAc;IAChB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEhE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,SAAS,yFAGZ,OAAO,CAAC,SAAS,CAAC,MACpB,MAAM,SACH,cAAc,KACpB,OAAO,CAAC,SAAS,CAAC,CA0FtB,CAAC"}
|