@capsulos/provider-docker 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type CapsuleHandle, type CapsuleInfo, type CapsuleSpec, type Connection, type Provider } from '@capsulos/sdk';
1
+ import { type CapsuleHandle, type CapsuleInfo, type CapsuleSpec, type Connection, type CreateOptions, type Provider } from '@capsulos/sdk';
2
2
  export interface DockerProviderOptions {
3
3
  /** Docker binary; defaults to `docker` on PATH. */
4
4
  docker?: string;
@@ -12,7 +12,7 @@ export declare class DockerProvider implements Provider {
12
12
  constructor(opts?: DockerProviderOptions);
13
13
  private cli;
14
14
  /** `template` is a local image name that runs capsulod (see daemon/Dockerfile and templates/). */
15
- create(spec: CapsuleSpec): Promise<CapsuleHandle>;
15
+ create(spec: CapsuleSpec, _opts?: CreateOptions): Promise<CapsuleHandle>;
16
16
  get(id: string): Promise<CapsuleInfo | null>;
17
17
  list(): Promise<CapsuleInfo[]>;
18
18
  terminate(id: string): Promise<void>;
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ export class DockerProvider {
26
26
  }
27
27
  }
28
28
  /** `template` is a local image name that runs capsulod (see daemon/Dockerfile and templates/). */
29
- async create(spec) {
29
+ async create(spec, _opts = {}) {
30
30
  const args = ['run', '-d', '--label', `capsulos=${this.label}`, '-p', `127.0.0.1::${CAPSULOD_PORT}`];
31
31
  // Mounts work with real kernel privileges, same as on Lambda with additionalOsCapabilities=ALL.
32
32
  if (spec.mounts && Object.keys(spec.mounts).length)
@@ -37,6 +37,10 @@ export class DockerProvider {
37
37
  args.push('--name', `capsule-${spec.clientToken}`);
38
38
  args.push(spec.template);
39
39
  const id = (await this.cli(...args)).slice(0, 12);
40
+ if (_opts.signal?.aborted) {
41
+ await this.terminate(id);
42
+ throw new CapsuleError(`creation of container ${id} aborted; removed it`, undefined, { capsuleId: id });
43
+ }
40
44
  // A container that dies right away (wrong-arch capsulod, missing binary)
41
45
  // has no published port; say why instead of "no public port".
42
46
  const status = await this.cli('inspect', '--format', '{{.State.Status}}', id);
@@ -45,13 +49,15 @@ export class DockerProvider {
45
49
  await this.terminate(id);
46
50
  throw new CapsuleError(`container exited at start (status ${status}). Is capsulod in the image built for linux/${process.arch === 'x64' ? 'amd64' : process.arch}? Logs:\n${logs}`);
47
51
  }
52
+ const connection = await this.connect(id);
48
53
  return {
49
54
  id,
50
55
  provider: this.name,
51
56
  state: 'running',
52
57
  template: spec.template,
53
58
  createdAt: new Date(),
54
- connection: await this.connect(id),
59
+ endpoint: connection.baseUrl,
60
+ connection,
55
61
  };
56
62
  }
57
63
  async get(id) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capsulos/provider-docker",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "capsulos provider for local Docker: the development and CI bench. Not an isolation boundary.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  "access": "public"
44
44
  },
45
45
  "dependencies": {
46
- "@capsulos/sdk": "0.1.0"
46
+ "@capsulos/sdk": "0.1.1"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "^22.20.1",
package/src/index.ts CHANGED
@@ -11,6 +11,7 @@ import {
11
11
  type CapsuleSpec,
12
12
  type CapsuleState,
13
13
  type Connection,
14
+ type CreateOptions,
14
15
  type Provider,
15
16
  } from '@capsulos/sdk';
16
17
 
@@ -46,7 +47,7 @@ export class DockerProvider implements Provider {
46
47
  }
47
48
 
48
49
  /** `template` is a local image name that runs capsulod (see daemon/Dockerfile and templates/). */
49
- async create(spec: CapsuleSpec): Promise<CapsuleHandle> {
50
+ async create(spec: CapsuleSpec, _opts: CreateOptions = {}): Promise<CapsuleHandle> {
50
51
  const args = ['run', '-d', '--label', `capsulos=${this.label}`, '-p', `127.0.0.1::${CAPSULOD_PORT}`];
51
52
  // Mounts work with real kernel privileges, same as on Lambda with additionalOsCapabilities=ALL.
52
53
  if (spec.mounts && Object.keys(spec.mounts).length) args.push('--privileged');
@@ -54,6 +55,10 @@ export class DockerProvider implements Provider {
54
55
  if (spec.clientToken) args.push('--name', `capsule-${spec.clientToken}`);
55
56
  args.push(spec.template);
56
57
  const id = (await this.cli(...args)).slice(0, 12);
58
+ if (_opts.signal?.aborted) {
59
+ await this.terminate(id);
60
+ throw new CapsuleError(`creation of container ${id} aborted; removed it`, undefined, { capsuleId: id });
61
+ }
57
62
  // A container that dies right away (wrong-arch capsulod, missing binary)
58
63
  // has no published port; say why instead of "no public port".
59
64
  const status = await this.cli('inspect', '--format', '{{.State.Status}}', id);
@@ -62,13 +67,15 @@ export class DockerProvider implements Provider {
62
67
  await this.terminate(id);
63
68
  throw new CapsuleError(`container exited at start (status ${status}). Is capsulod in the image built for linux/${process.arch === 'x64' ? 'amd64' : process.arch}? Logs:\n${logs}`);
64
69
  }
70
+ const connection = await this.connect(id);
65
71
  return {
66
72
  id,
67
73
  provider: this.name,
68
74
  state: 'running',
69
75
  template: spec.template,
70
76
  createdAt: new Date(),
71
- connection: await this.connect(id),
77
+ endpoint: connection.baseUrl,
78
+ connection,
72
79
  };
73
80
  }
74
81