@soederpop/luca 0.0.2
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/CLAUDE.md +71 -0
- package/README.md +78 -0
- package/bun.lock +2928 -0
- package/bunfig.toml +3 -0
- package/commands/audit-docs.ts +740 -0
- package/commands/build-scaffolds.ts +154 -0
- package/commands/generate-api-docs.ts +114 -0
- package/commands/update-introspection.ts +67 -0
- package/docs/CLI.md +335 -0
- package/docs/README.md +88 -0
- package/docs/TABLE-OF-CONTENTS.md +157 -0
- package/docs/apis/clients/elevenlabs.md +84 -0
- package/docs/apis/clients/graph.md +56 -0
- package/docs/apis/clients/openai.md +69 -0
- package/docs/apis/clients/rest.md +41 -0
- package/docs/apis/clients/websocket.md +107 -0
- package/docs/apis/features/agi/assistant.md +471 -0
- package/docs/apis/features/agi/assistants-manager.md +154 -0
- package/docs/apis/features/agi/claude-code.md +602 -0
- package/docs/apis/features/agi/conversation-history.md +352 -0
- package/docs/apis/features/agi/conversation.md +333 -0
- package/docs/apis/features/agi/docs-reader.md +121 -0
- package/docs/apis/features/agi/openai-codex.md +318 -0
- package/docs/apis/features/agi/openapi.md +138 -0
- package/docs/apis/features/agi/semantic-search.md +387 -0
- package/docs/apis/features/agi/skills-library.md +216 -0
- package/docs/apis/features/node/container-link.md +133 -0
- package/docs/apis/features/node/content-db.md +313 -0
- package/docs/apis/features/node/disk-cache.md +379 -0
- package/docs/apis/features/node/dns.md +651 -0
- package/docs/apis/features/node/docker.md +705 -0
- package/docs/apis/features/node/downloader.md +81 -0
- package/docs/apis/features/node/esbuild.md +59 -0
- package/docs/apis/features/node/file-manager.md +182 -0
- package/docs/apis/features/node/fs.md +581 -0
- package/docs/apis/features/node/git.md +330 -0
- package/docs/apis/features/node/google-auth.md +174 -0
- package/docs/apis/features/node/google-calendar.md +187 -0
- package/docs/apis/features/node/google-docs.md +151 -0
- package/docs/apis/features/node/google-drive.md +225 -0
- package/docs/apis/features/node/google-sheets.md +179 -0
- package/docs/apis/features/node/grep.md +290 -0
- package/docs/apis/features/node/helpers.md +135 -0
- package/docs/apis/features/node/ink.md +334 -0
- package/docs/apis/features/node/ipc-socket.md +260 -0
- package/docs/apis/features/node/json-tree.md +86 -0
- package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
- package/docs/apis/features/node/networking.md +281 -0
- package/docs/apis/features/node/nlp.md +133 -0
- package/docs/apis/features/node/opener.md +97 -0
- package/docs/apis/features/node/os.md +118 -0
- package/docs/apis/features/node/package-finder.md +402 -0
- package/docs/apis/features/node/postgres.md +212 -0
- package/docs/apis/features/node/proc.md +430 -0
- package/docs/apis/features/node/process-manager.md +210 -0
- package/docs/apis/features/node/python.md +278 -0
- package/docs/apis/features/node/repl.md +88 -0
- package/docs/apis/features/node/runpod.md +673 -0
- package/docs/apis/features/node/secure-shell.md +169 -0
- package/docs/apis/features/node/semantic-search.md +401 -0
- package/docs/apis/features/node/sqlite.md +211 -0
- package/docs/apis/features/node/telegram.md +254 -0
- package/docs/apis/features/node/tts.md +118 -0
- package/docs/apis/features/node/ui.md +703 -0
- package/docs/apis/features/node/vault.md +64 -0
- package/docs/apis/features/node/vm.md +84 -0
- package/docs/apis/features/node/window-manager.md +337 -0
- package/docs/apis/features/node/yaml-tree.md +85 -0
- package/docs/apis/features/node/yaml.md +176 -0
- package/docs/apis/features/web/asset-loader.md +47 -0
- package/docs/apis/features/web/container-link.md +133 -0
- package/docs/apis/features/web/esbuild.md +59 -0
- package/docs/apis/features/web/helpers.md +135 -0
- package/docs/apis/features/web/network.md +30 -0
- package/docs/apis/features/web/speech.md +55 -0
- package/docs/apis/features/web/vault.md +64 -0
- package/docs/apis/features/web/vm.md +84 -0
- package/docs/apis/features/web/voice.md +67 -0
- package/docs/apis/servers/express.md +127 -0
- package/docs/apis/servers/mcp.md +213 -0
- package/docs/apis/servers/websocket.md +99 -0
- package/docs/documentation-audit.md +134 -0
- package/docs/examples/content-db.md +77 -0
- package/docs/examples/disk-cache.md +83 -0
- package/docs/examples/docker.md +101 -0
- package/docs/examples/downloader.md +70 -0
- package/docs/examples/esbuild.md +80 -0
- package/docs/examples/file-manager.md +82 -0
- package/docs/examples/fs.md +83 -0
- package/docs/examples/git.md +85 -0
- package/docs/examples/google-auth.md +88 -0
- package/docs/examples/google-calendar.md +94 -0
- package/docs/examples/google-docs.md +82 -0
- package/docs/examples/google-drive.md +96 -0
- package/docs/examples/google-sheets.md +95 -0
- package/docs/examples/grep.md +85 -0
- package/docs/examples/ink-blocks.md +75 -0
- package/docs/examples/ink-renderer.md +41 -0
- package/docs/examples/ink.md +103 -0
- package/docs/examples/ipc-socket.md +103 -0
- package/docs/examples/json-tree.md +91 -0
- package/docs/examples/launcher-app-command-listener.md +120 -0
- package/docs/examples/networking.md +58 -0
- package/docs/examples/nlp.md +91 -0
- package/docs/examples/opener.md +78 -0
- package/docs/examples/os.md +72 -0
- package/docs/examples/package-finder.md +89 -0
- package/docs/examples/port-exposer.md +89 -0
- package/docs/examples/postgres.md +91 -0
- package/docs/examples/proc.md +81 -0
- package/docs/examples/process-manager.md +79 -0
- package/docs/examples/python.md +91 -0
- package/docs/examples/repl.md +93 -0
- package/docs/examples/runpod.md +119 -0
- package/docs/examples/secure-shell.md +92 -0
- package/docs/examples/sqlite.md +86 -0
- package/docs/examples/telegram.md +77 -0
- package/docs/examples/tts.md +86 -0
- package/docs/examples/ui.md +80 -0
- package/docs/examples/vault.md +70 -0
- package/docs/examples/vm.md +86 -0
- package/docs/examples/window-manager.md +125 -0
- package/docs/examples/yaml-tree.md +93 -0
- package/docs/examples/yaml.md +104 -0
- package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
- package/docs/ideas/container-use-api.md +9 -0
- package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
- package/docs/ideas/feature-stacks.md +22 -0
- package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
- package/docs/ideas/mcp-design.md +9 -0
- package/docs/ideas/web-container-debugging-feature.md +13 -0
- package/docs/introspection-audit.md +49 -0
- package/docs/introspection.md +154 -0
- package/docs/mcp/readme.md +162 -0
- package/docs/models.ts +38 -0
- package/docs/philosophy.md +85 -0
- package/docs/principles.md +7 -0
- package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
- package/docs/prompts/mcp-test-easy-command.md +27 -0
- package/docs/reports/assistant-bugs.md +38 -0
- package/docs/reports/attach-pattern-usage.md +18 -0
- package/docs/reports/code-audit-results.md +391 -0
- package/docs/reports/introspection-audit-tasks.md +378 -0
- package/docs/reports/luca-mcp-improvements.md +128 -0
- package/docs/scaffolds/client.md +140 -0
- package/docs/scaffolds/command.md +106 -0
- package/docs/scaffolds/endpoint.md +176 -0
- package/docs/scaffolds/feature.md +148 -0
- package/docs/scaffolds/server.md +187 -0
- package/docs/tasks/web-container-helper-discovery.md +71 -0
- package/docs/todos.md +1 -0
- package/docs/tutorials/01-getting-started.md +106 -0
- package/docs/tutorials/02-container.md +210 -0
- package/docs/tutorials/03-scripts.md +194 -0
- package/docs/tutorials/04-features-overview.md +196 -0
- package/docs/tutorials/05-state-and-events.md +171 -0
- package/docs/tutorials/06-servers.md +157 -0
- package/docs/tutorials/07-endpoints.md +198 -0
- package/docs/tutorials/08-commands.md +171 -0
- package/docs/tutorials/09-clients.md +162 -0
- package/docs/tutorials/10-creating-features.md +198 -0
- package/docs/tutorials/11-contentbase.md +191 -0
- package/docs/tutorials/12-assistants.md +215 -0
- package/docs/tutorials/13-introspection.md +147 -0
- package/docs/tutorials/14-type-system.md +174 -0
- package/docs/tutorials/15-project-patterns.md +222 -0
- package/docs/tutorials/16-google-features.md +534 -0
- package/docs/tutorials/17-tui-blocks.md +530 -0
- package/docs/tutorials/18-semantic-search.md +334 -0
- package/index.ts +1 -0
- package/luca.console.ts +9 -0
- package/main.py +6 -0
- package/package.json +154 -0
- package/pyproject.toml +7 -0
- package/scripts/animations/chrome-glitch.ts +55 -0
- package/scripts/animations/index.ts +16 -0
- package/scripts/animations/neon-pulse.ts +64 -0
- package/scripts/animations/types.ts +6 -0
- package/scripts/build-web.ts +28 -0
- package/scripts/examples/ask-luca-expert.ts +42 -0
- package/scripts/examples/assistant-questions.ts +12 -0
- package/scripts/examples/excalidraw-expert.ts +75 -0
- package/scripts/examples/expert-chat.ts +0 -0
- package/scripts/examples/file-manager.ts +14 -0
- package/scripts/examples/ideas.ts +12 -0
- package/scripts/examples/interactive-chat.ts +20 -0
- package/scripts/examples/openai-tool-calls.ts +113 -0
- package/scripts/examples/opening-a-web-browser.ts +5 -0
- package/scripts/examples/telegram-bot.ts +79 -0
- package/scripts/examples/telegram-ink-ui.ts +302 -0
- package/scripts/examples/using-assistant-with-mcp.ts +560 -0
- package/scripts/examples/using-claude-code.ts +10 -0
- package/scripts/examples/using-contentdb.ts +35 -0
- package/scripts/examples/using-conversations.ts +35 -0
- package/scripts/examples/using-disk-cache.ts +10 -0
- package/scripts/examples/using-docker-shell.ts +75 -0
- package/scripts/examples/using-elevenlabs.ts +25 -0
- package/scripts/examples/using-google-calendar.ts +57 -0
- package/scripts/examples/using-google-docs.ts +74 -0
- package/scripts/examples/using-google-drive.ts +74 -0
- package/scripts/examples/using-google-sheets.ts +89 -0
- package/scripts/examples/using-nlp.ts +55 -0
- package/scripts/examples/using-ollama.ts +10 -0
- package/scripts/examples/using-openai-codex.ts +23 -0
- package/scripts/examples/using-postgres.ts +55 -0
- package/scripts/examples/using-runpod.ts +32 -0
- package/scripts/examples/using-tts.ts +40 -0
- package/scripts/examples/vm-loading-esm-modules.ts +16 -0
- package/scripts/scaffold.ts +391 -0
- package/scripts/scratch.ts +15 -0
- package/scripts/test-command-listener.ts +123 -0
- package/scripts/test-window-manager-lifecycle.ts +86 -0
- package/scripts/test-window-manager.ts +43 -0
- package/scripts/update-introspection-data.ts +58 -0
- package/src/agi/README.md +14 -0
- package/src/agi/container.server.ts +114 -0
- package/src/agi/endpoints/ask.ts +60 -0
- package/src/agi/endpoints/conversations/[id].ts +45 -0
- package/src/agi/endpoints/conversations.ts +31 -0
- package/src/agi/endpoints/experts.ts +37 -0
- package/src/agi/features/assistant.ts +767 -0
- package/src/agi/features/assistants-manager.ts +260 -0
- package/src/agi/features/claude-code.ts +1111 -0
- package/src/agi/features/conversation-history.ts +497 -0
- package/src/agi/features/conversation.ts +799 -0
- package/src/agi/features/openai-codex.ts +631 -0
- package/src/agi/features/openapi.ts +438 -0
- package/src/agi/features/skills-library.ts +425 -0
- package/src/agi/index.ts +6 -0
- package/src/agi/lib/token-counter.ts +122 -0
- package/src/browser.ts +25 -0
- package/src/bus.ts +100 -0
- package/src/cli/cli.ts +70 -0
- package/src/client.ts +461 -0
- package/src/clients/civitai/index.ts +541 -0
- package/src/clients/client-template.ts +41 -0
- package/src/clients/comfyui/index.ts +597 -0
- package/src/clients/elevenlabs/index.ts +291 -0
- package/src/clients/openai/index.ts +451 -0
- package/src/clients/supabase/index.ts +366 -0
- package/src/command.ts +164 -0
- package/src/commands/chat.ts +182 -0
- package/src/commands/console.ts +192 -0
- package/src/commands/describe.ts +433 -0
- package/src/commands/eval.ts +116 -0
- package/src/commands/help.ts +214 -0
- package/src/commands/index.ts +14 -0
- package/src/commands/mcp.ts +64 -0
- package/src/commands/prompt.ts +807 -0
- package/src/commands/run.ts +257 -0
- package/src/commands/sandbox-mcp.ts +439 -0
- package/src/commands/scaffold.ts +79 -0
- package/src/commands/serve.ts +172 -0
- package/src/container.ts +781 -0
- package/src/endpoint.ts +340 -0
- package/src/feature.ts +75 -0
- package/src/hash-object.ts +97 -0
- package/src/helper.ts +543 -0
- package/src/introspection/generated.agi.ts +23388 -0
- package/src/introspection/generated.node.ts +18899 -0
- package/src/introspection/generated.web.ts +2021 -0
- package/src/introspection/index.ts +256 -0
- package/src/introspection/scan.ts +912 -0
- package/src/node/container.ts +354 -0
- package/src/node/feature.ts +13 -0
- package/src/node/features/container-link.ts +558 -0
- package/src/node/features/content-db.ts +475 -0
- package/src/node/features/disk-cache.ts +382 -0
- package/src/node/features/dns.ts +655 -0
- package/src/node/features/docker.ts +912 -0
- package/src/node/features/downloader.ts +92 -0
- package/src/node/features/esbuild.ts +68 -0
- package/src/node/features/file-manager.ts +357 -0
- package/src/node/features/fs.ts +534 -0
- package/src/node/features/git.ts +492 -0
- package/src/node/features/google-auth.ts +502 -0
- package/src/node/features/google-calendar.ts +300 -0
- package/src/node/features/google-docs.ts +404 -0
- package/src/node/features/google-drive.ts +339 -0
- package/src/node/features/google-sheets.ts +279 -0
- package/src/node/features/grep.ts +406 -0
- package/src/node/features/helpers.ts +374 -0
- package/src/node/features/ink.ts +490 -0
- package/src/node/features/ipc-socket.ts +459 -0
- package/src/node/features/json-tree.ts +188 -0
- package/src/node/features/launcher-app-command-listener.ts +388 -0
- package/src/node/features/networking.ts +925 -0
- package/src/node/features/nlp.ts +211 -0
- package/src/node/features/opener.ts +166 -0
- package/src/node/features/os.ts +157 -0
- package/src/node/features/package-finder.ts +539 -0
- package/src/node/features/port-exposer.ts +342 -0
- package/src/node/features/postgres.ts +273 -0
- package/src/node/features/proc.ts +502 -0
- package/src/node/features/process-manager.ts +542 -0
- package/src/node/features/python.ts +444 -0
- package/src/node/features/repl.ts +194 -0
- package/src/node/features/runpod.ts +802 -0
- package/src/node/features/secure-shell.ts +248 -0
- package/src/node/features/semantic-search.ts +924 -0
- package/src/node/features/sqlite.ts +289 -0
- package/src/node/features/telegram.ts +342 -0
- package/src/node/features/tts.ts +184 -0
- package/src/node/features/ui.ts +857 -0
- package/src/node/features/vault.ts +164 -0
- package/src/node/features/vm.ts +312 -0
- package/src/node/features/window-manager.ts +804 -0
- package/src/node/features/yaml-tree.ts +149 -0
- package/src/node/features/yaml.ts +132 -0
- package/src/node.ts +70 -0
- package/src/react/index.ts +175 -0
- package/src/registry.ts +199 -0
- package/src/scaffolds/generated.ts +1613 -0
- package/src/scaffolds/template.ts +37 -0
- package/src/schemas/base.ts +255 -0
- package/src/server.ts +135 -0
- package/src/servers/express.ts +209 -0
- package/src/servers/mcp.ts +805 -0
- package/src/servers/socket.ts +120 -0
- package/src/state.ts +101 -0
- package/src/web/clients/socket.ts +82 -0
- package/src/web/container.ts +74 -0
- package/src/web/extension.ts +30 -0
- package/src/web/feature.ts +12 -0
- package/src/web/features/asset-loader.ts +64 -0
- package/src/web/features/container-link.ts +385 -0
- package/src/web/features/esbuild.ts +79 -0
- package/src/web/features/helpers.ts +267 -0
- package/src/web/features/network.ts +61 -0
- package/src/web/features/speech.ts +87 -0
- package/src/web/features/vault.ts +189 -0
- package/src/web/features/vm.ts +78 -0
- package/src/web/features/voice-recognition.ts +129 -0
- package/src/web/shims/isomorphic-vm.ts +149 -0
- package/test/bus.test.ts +134 -0
- package/test/clients-servers.test.ts +216 -0
- package/test/container-link.test.ts +274 -0
- package/test/features.test.ts +160 -0
- package/test/integration.test.ts +787 -0
- package/test/node-container.test.ts +121 -0
- package/test/rate-limit.test.ts +272 -0
- package/test/semantic-search.test.ts +550 -0
- package/test/state.test.ts +121 -0
- package/test-integration/assistant.test.ts +138 -0
- package/test-integration/assistants-manager.test.ts +123 -0
- package/test-integration/claude-code.test.ts +98 -0
- package/test-integration/conversation-history.test.ts +205 -0
- package/test-integration/conversation.test.ts +137 -0
- package/test-integration/elevenlabs.test.ts +55 -0
- package/test-integration/google-services.test.ts +80 -0
- package/test-integration/helpers.ts +89 -0
- package/test-integration/openai-codex.test.ts +93 -0
- package/test-integration/runpod.test.ts +58 -0
- package/test-integration/server-endpoints.test.ts +97 -0
- package/test-integration/skills-library.test.ts +157 -0
- package/test-integration/telegram.test.ts +46 -0
- package/tsconfig.json +58 -0
- package/uv.lock +8 -0
|
@@ -0,0 +1,705 @@
|
|
|
1
|
+
# Docker (features.docker)
|
|
2
|
+
|
|
3
|
+
Docker CLI interface feature for managing containers, images, and executing Docker commands. Provides comprehensive Docker operations including: - Container management (list, start, stop, create, remove) - Image management (list, pull, build, remove) - Command execution inside containers - Docker system information
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('docker', {
|
|
9
|
+
// Path to docker executable
|
|
10
|
+
dockerPath,
|
|
11
|
+
// Command timeout in milliseconds
|
|
12
|
+
timeout,
|
|
13
|
+
// Auto refresh containers/images after operations
|
|
14
|
+
autoRefresh,
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Options (Zod v4 schema)
|
|
19
|
+
|
|
20
|
+
| Property | Type | Description |
|
|
21
|
+
|----------|------|-------------|
|
|
22
|
+
| `dockerPath` | `string` | Path to docker executable |
|
|
23
|
+
| `timeout` | `number` | Command timeout in milliseconds |
|
|
24
|
+
| `autoRefresh` | `boolean` | Auto refresh containers/images after operations |
|
|
25
|
+
|
|
26
|
+
## Methods
|
|
27
|
+
|
|
28
|
+
### checkDockerAvailability
|
|
29
|
+
|
|
30
|
+
Check if Docker is available and working.
|
|
31
|
+
|
|
32
|
+
**Returns:** `Promise<boolean>`
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
const available = await docker.checkDockerAvailability()
|
|
36
|
+
if (!available) console.log('Docker is not installed or not running')
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### listContainers
|
|
42
|
+
|
|
43
|
+
List all containers (running and stopped).
|
|
44
|
+
|
|
45
|
+
**Parameters:**
|
|
46
|
+
|
|
47
|
+
| Name | Type | Required | Description |
|
|
48
|
+
|------|------|----------|-------------|
|
|
49
|
+
| `options` | `{ all?: boolean }` | | Listing options |
|
|
50
|
+
|
|
51
|
+
`{ all?: boolean }` properties:
|
|
52
|
+
|
|
53
|
+
| Property | Type | Description |
|
|
54
|
+
|----------|------|-------------|
|
|
55
|
+
| `all` | `any` | Include stopped containers (default: false) |
|
|
56
|
+
|
|
57
|
+
**Returns:** `Promise<DockerContainer[]>`
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
const running = await docker.listContainers()
|
|
61
|
+
const all = await docker.listContainers({ all: true })
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### listImages
|
|
67
|
+
|
|
68
|
+
List all images available locally.
|
|
69
|
+
|
|
70
|
+
**Returns:** `Promise<DockerImage[]>`
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
const images = await docker.listImages()
|
|
74
|
+
console.log(images.map(i => `${i.repository}:${i.tag}`))
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### startContainer
|
|
80
|
+
|
|
81
|
+
Start a stopped container.
|
|
82
|
+
|
|
83
|
+
**Parameters:**
|
|
84
|
+
|
|
85
|
+
| Name | Type | Required | Description |
|
|
86
|
+
|------|------|----------|-------------|
|
|
87
|
+
| `containerIdOrName` | `string` | ✓ | Container ID or name to start |
|
|
88
|
+
|
|
89
|
+
**Returns:** `Promise<void>`
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
await docker.startContainer('my-app')
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
### stopContainer
|
|
98
|
+
|
|
99
|
+
Stop a running container.
|
|
100
|
+
|
|
101
|
+
**Parameters:**
|
|
102
|
+
|
|
103
|
+
| Name | Type | Required | Description |
|
|
104
|
+
|------|------|----------|-------------|
|
|
105
|
+
| `containerIdOrName` | `string` | ✓ | Container ID or name to stop |
|
|
106
|
+
| `timeout` | `number` | | Seconds to wait before killing the container |
|
|
107
|
+
|
|
108
|
+
**Returns:** `Promise<void>`
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
await docker.stopContainer('my-app')
|
|
112
|
+
await docker.stopContainer('my-app', 30) // wait up to 30s
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
### removeContainer
|
|
118
|
+
|
|
119
|
+
Remove a container.
|
|
120
|
+
|
|
121
|
+
**Parameters:**
|
|
122
|
+
|
|
123
|
+
| Name | Type | Required | Description |
|
|
124
|
+
|------|------|----------|-------------|
|
|
125
|
+
| `containerIdOrName` | `string` | ✓ | Container ID or name to remove |
|
|
126
|
+
| `options` | `{ force?: boolean }` | | Removal options |
|
|
127
|
+
|
|
128
|
+
`{ force?: boolean }` properties:
|
|
129
|
+
|
|
130
|
+
| Property | Type | Description |
|
|
131
|
+
|----------|------|-------------|
|
|
132
|
+
| `force` | `any` | Force removal of a running container |
|
|
133
|
+
|
|
134
|
+
**Returns:** `Promise<void>`
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
await docker.removeContainer('old-container')
|
|
138
|
+
await docker.removeContainer('stubborn-container', { force: true })
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
### runContainer
|
|
144
|
+
|
|
145
|
+
Create and run a new container from the given image.
|
|
146
|
+
|
|
147
|
+
**Parameters:**
|
|
148
|
+
|
|
149
|
+
| Name | Type | Required | Description |
|
|
150
|
+
|------|------|----------|-------------|
|
|
151
|
+
| `image` | `string` | ✓ | Docker image to run (e.g. 'nginx:latest') |
|
|
152
|
+
| `options` | `{
|
|
153
|
+
/** Assign a name to the container */
|
|
154
|
+
name?: string
|
|
155
|
+
/** Port mappings in 'host:container' format */
|
|
156
|
+
ports?: string[]
|
|
157
|
+
/** Volume mounts in 'host:container' format */
|
|
158
|
+
volumes?: string[]
|
|
159
|
+
/** Environment variables as key-value pairs */
|
|
160
|
+
environment?: Record<string, string>
|
|
161
|
+
/** Run the container in the background */
|
|
162
|
+
detach?: boolean
|
|
163
|
+
/** Keep STDIN open */
|
|
164
|
+
interactive?: boolean
|
|
165
|
+
/** Allocate a pseudo-TTY */
|
|
166
|
+
tty?: boolean
|
|
167
|
+
/** Command and arguments to run inside the container */
|
|
168
|
+
command?: string[]
|
|
169
|
+
/** Working directory inside the container */
|
|
170
|
+
workdir?: string
|
|
171
|
+
/** Username or UID to run as */
|
|
172
|
+
user?: string
|
|
173
|
+
/** Override the default entrypoint */
|
|
174
|
+
entrypoint?: string
|
|
175
|
+
/** Connect the container to a network */
|
|
176
|
+
network?: string
|
|
177
|
+
/** Restart policy (e.g. 'always', 'on-failure') */
|
|
178
|
+
restart?: string
|
|
179
|
+
}` | | Container run options |
|
|
180
|
+
|
|
181
|
+
`{
|
|
182
|
+
/** Assign a name to the container */
|
|
183
|
+
name?: string
|
|
184
|
+
/** Port mappings in 'host:container' format */
|
|
185
|
+
ports?: string[]
|
|
186
|
+
/** Volume mounts in 'host:container' format */
|
|
187
|
+
volumes?: string[]
|
|
188
|
+
/** Environment variables as key-value pairs */
|
|
189
|
+
environment?: Record<string, string>
|
|
190
|
+
/** Run the container in the background */
|
|
191
|
+
detach?: boolean
|
|
192
|
+
/** Keep STDIN open */
|
|
193
|
+
interactive?: boolean
|
|
194
|
+
/** Allocate a pseudo-TTY */
|
|
195
|
+
tty?: boolean
|
|
196
|
+
/** Command and arguments to run inside the container */
|
|
197
|
+
command?: string[]
|
|
198
|
+
/** Working directory inside the container */
|
|
199
|
+
workdir?: string
|
|
200
|
+
/** Username or UID to run as */
|
|
201
|
+
user?: string
|
|
202
|
+
/** Override the default entrypoint */
|
|
203
|
+
entrypoint?: string
|
|
204
|
+
/** Connect the container to a network */
|
|
205
|
+
network?: string
|
|
206
|
+
/** Restart policy (e.g. 'always', 'on-failure') */
|
|
207
|
+
restart?: string
|
|
208
|
+
}` properties:
|
|
209
|
+
|
|
210
|
+
| Property | Type | Description |
|
|
211
|
+
|----------|------|-------------|
|
|
212
|
+
| `name` | `any` | Assign a name to the container |
|
|
213
|
+
| `ports` | `any` | Port mappings in 'host:container' format (e.g. ['8080:80']) |
|
|
214
|
+
| `volumes` | `any` | Volume mounts in 'host:container' format (e.g. ['./data:/app/data']) |
|
|
215
|
+
| `environment` | `any` | Environment variables as key-value pairs |
|
|
216
|
+
| `detach` | `any` | Run the container in the background |
|
|
217
|
+
| `interactive` | `any` | Keep STDIN open |
|
|
218
|
+
| `tty` | `any` | Allocate a pseudo-TTY |
|
|
219
|
+
| `command` | `any` | Command and arguments to run inside the container |
|
|
220
|
+
| `workdir` | `any` | Working directory inside the container |
|
|
221
|
+
| `user` | `any` | Username or UID to run as |
|
|
222
|
+
| `entrypoint` | `any` | Override the default entrypoint |
|
|
223
|
+
| `network` | `any` | Connect the container to a network |
|
|
224
|
+
| `restart` | `any` | Restart policy (e.g. 'always', 'on-failure') |
|
|
225
|
+
|
|
226
|
+
**Returns:** `Promise<string>`
|
|
227
|
+
|
|
228
|
+
```ts
|
|
229
|
+
const containerId = await docker.runContainer('nginx:latest', {
|
|
230
|
+
name: 'web',
|
|
231
|
+
ports: ['8080:80'],
|
|
232
|
+
detach: true,
|
|
233
|
+
environment: { NODE_ENV: 'production' }
|
|
234
|
+
})
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
### execCommand
|
|
240
|
+
|
|
241
|
+
Execute a command inside a running container. When volumes are specified, uses `docker run --rm` with the container's image instead of `docker exec`, since exec does not support volume mounts.
|
|
242
|
+
|
|
243
|
+
**Parameters:**
|
|
244
|
+
|
|
245
|
+
| Name | Type | Required | Description |
|
|
246
|
+
|------|------|----------|-------------|
|
|
247
|
+
| `containerIdOrName` | `string` | ✓ | Container ID or name to execute in |
|
|
248
|
+
| `command` | `string[]` | ✓ | Command and arguments array (e.g. ['ls', '-la']) |
|
|
249
|
+
| `options` | `{
|
|
250
|
+
/** Keep STDIN open */
|
|
251
|
+
interactive?: boolean
|
|
252
|
+
/** Allocate a pseudo-TTY */
|
|
253
|
+
tty?: boolean
|
|
254
|
+
/** Username or UID to run as */
|
|
255
|
+
user?: string
|
|
256
|
+
/** Working directory inside the container */
|
|
257
|
+
workdir?: string
|
|
258
|
+
/** Run the command in the background */
|
|
259
|
+
detach?: boolean
|
|
260
|
+
/** Environment variables as key-value pairs */
|
|
261
|
+
environment?: Record<string, string>
|
|
262
|
+
/** Volume mounts; triggers a docker run --rm fallback */
|
|
263
|
+
volumes?: string[]
|
|
264
|
+
}` | | Execution options |
|
|
265
|
+
|
|
266
|
+
`{
|
|
267
|
+
/** Keep STDIN open */
|
|
268
|
+
interactive?: boolean
|
|
269
|
+
/** Allocate a pseudo-TTY */
|
|
270
|
+
tty?: boolean
|
|
271
|
+
/** Username or UID to run as */
|
|
272
|
+
user?: string
|
|
273
|
+
/** Working directory inside the container */
|
|
274
|
+
workdir?: string
|
|
275
|
+
/** Run the command in the background */
|
|
276
|
+
detach?: boolean
|
|
277
|
+
/** Environment variables as key-value pairs */
|
|
278
|
+
environment?: Record<string, string>
|
|
279
|
+
/** Volume mounts; triggers a docker run --rm fallback */
|
|
280
|
+
volumes?: string[]
|
|
281
|
+
}` properties:
|
|
282
|
+
|
|
283
|
+
| Property | Type | Description |
|
|
284
|
+
|----------|------|-------------|
|
|
285
|
+
| `interactive` | `any` | Keep STDIN open |
|
|
286
|
+
| `tty` | `any` | Allocate a pseudo-TTY |
|
|
287
|
+
| `user` | `any` | Username or UID to run as |
|
|
288
|
+
| `workdir` | `any` | Working directory inside the container |
|
|
289
|
+
| `detach` | `any` | Run the command in the background |
|
|
290
|
+
| `environment` | `any` | Environment variables as key-value pairs |
|
|
291
|
+
| `volumes` | `any` | Volume mounts; triggers a docker run --rm fallback |
|
|
292
|
+
|
|
293
|
+
**Returns:** `Promise<{ stdout: string; stderr: string; exitCode: number }>`
|
|
294
|
+
|
|
295
|
+
```ts
|
|
296
|
+
const result = await docker.execCommand('my-app', ['ls', '-la', '/app'])
|
|
297
|
+
console.log(result.stdout)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
### createShell
|
|
303
|
+
|
|
304
|
+
Create a shell-like wrapper for executing multiple commands against a container. When volume mounts are specified, a new long-running container is created from the same image with the mounts applied (since docker exec does not support volumes). Call `destroy()` when finished to clean up the helper container. Returns an object with: - `run(command)` — execute a shell command string via `sh -c` - `last` — getter for the most recent command result - `destroy()` — stop the helper container (no-op when no volumes were needed)
|
|
305
|
+
|
|
306
|
+
**Parameters:**
|
|
307
|
+
|
|
308
|
+
| Name | Type | Required | Description |
|
|
309
|
+
|------|------|----------|-------------|
|
|
310
|
+
| `containerIdOrName` | `string` | ✓ | Parameter containerIdOrName |
|
|
311
|
+
| `options` | `{
|
|
312
|
+
volumes?: string[]
|
|
313
|
+
workdir?: string
|
|
314
|
+
user?: string
|
|
315
|
+
environment?: Record<string, string>
|
|
316
|
+
}` | | Parameter options |
|
|
317
|
+
|
|
318
|
+
**Returns:** `Promise<DockerShell>`
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
### pullImage
|
|
323
|
+
|
|
324
|
+
Pull an image from a registry.
|
|
325
|
+
|
|
326
|
+
**Parameters:**
|
|
327
|
+
|
|
328
|
+
| Name | Type | Required | Description |
|
|
329
|
+
|------|------|----------|-------------|
|
|
330
|
+
| `image` | `string` | ✓ | Full image reference (e.g. 'nginx:latest', 'ghcr.io/org/repo:tag') |
|
|
331
|
+
|
|
332
|
+
**Returns:** `Promise<void>`
|
|
333
|
+
|
|
334
|
+
```ts
|
|
335
|
+
await docker.pullImage('node:20-alpine')
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
### removeImage
|
|
341
|
+
|
|
342
|
+
Remove an image from the local store.
|
|
343
|
+
|
|
344
|
+
**Parameters:**
|
|
345
|
+
|
|
346
|
+
| Name | Type | Required | Description |
|
|
347
|
+
|------|------|----------|-------------|
|
|
348
|
+
| `imageIdOrName` | `string` | ✓ | Image ID, repository, or repository:tag to remove |
|
|
349
|
+
| `options` | `{ force?: boolean }` | | Removal options |
|
|
350
|
+
|
|
351
|
+
`{ force?: boolean }` properties:
|
|
352
|
+
|
|
353
|
+
| Property | Type | Description |
|
|
354
|
+
|----------|------|-------------|
|
|
355
|
+
| `force` | `any` | Force removal even if the image is in use |
|
|
356
|
+
|
|
357
|
+
**Returns:** `Promise<void>`
|
|
358
|
+
|
|
359
|
+
```ts
|
|
360
|
+
await docker.removeImage('nginx:latest')
|
|
361
|
+
await docker.removeImage('old-image', { force: true })
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
### buildImage
|
|
367
|
+
|
|
368
|
+
Build an image from a Dockerfile.
|
|
369
|
+
|
|
370
|
+
**Parameters:**
|
|
371
|
+
|
|
372
|
+
| Name | Type | Required | Description |
|
|
373
|
+
|------|------|----------|-------------|
|
|
374
|
+
| `contextPath` | `string` | ✓ | Path to the build context directory |
|
|
375
|
+
| `options` | `{
|
|
376
|
+
/** Tag the resulting image (e.g. 'my-app:latest') */
|
|
377
|
+
tag?: string
|
|
378
|
+
/** Path to an alternate Dockerfile */
|
|
379
|
+
dockerfile?: string
|
|
380
|
+
/** Build-time variables as key-value pairs */
|
|
381
|
+
buildArgs?: Record<string, string>
|
|
382
|
+
/** Target build stage in a multi-stage Dockerfile */
|
|
383
|
+
target?: string
|
|
384
|
+
/** Do not use cache when building the image */
|
|
385
|
+
nocache?: boolean
|
|
386
|
+
}` | | Build options |
|
|
387
|
+
|
|
388
|
+
`{
|
|
389
|
+
/** Tag the resulting image (e.g. 'my-app:latest') */
|
|
390
|
+
tag?: string
|
|
391
|
+
/** Path to an alternate Dockerfile */
|
|
392
|
+
dockerfile?: string
|
|
393
|
+
/** Build-time variables as key-value pairs */
|
|
394
|
+
buildArgs?: Record<string, string>
|
|
395
|
+
/** Target build stage in a multi-stage Dockerfile */
|
|
396
|
+
target?: string
|
|
397
|
+
/** Do not use cache when building the image */
|
|
398
|
+
nocache?: boolean
|
|
399
|
+
}` properties:
|
|
400
|
+
|
|
401
|
+
| Property | Type | Description |
|
|
402
|
+
|----------|------|-------------|
|
|
403
|
+
| `tag` | `any` | Tag the resulting image (e.g. 'my-app:latest') |
|
|
404
|
+
| `dockerfile` | `any` | Path to an alternate Dockerfile |
|
|
405
|
+
| `buildArgs` | `any` | Build-time variables as key-value pairs |
|
|
406
|
+
| `target` | `any` | Target build stage in a multi-stage Dockerfile |
|
|
407
|
+
| `nocache` | `any` | Do not use cache when building the image |
|
|
408
|
+
|
|
409
|
+
**Returns:** `Promise<void>`
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
await docker.buildImage('./project', {
|
|
413
|
+
tag: 'my-app:latest',
|
|
414
|
+
buildArgs: { NODE_ENV: 'production' }
|
|
415
|
+
})
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
### getLogs
|
|
421
|
+
|
|
422
|
+
Get container logs.
|
|
423
|
+
|
|
424
|
+
**Parameters:**
|
|
425
|
+
|
|
426
|
+
| Name | Type | Required | Description |
|
|
427
|
+
|------|------|----------|-------------|
|
|
428
|
+
| `containerIdOrName` | `string` | ✓ | Container ID or name to fetch logs from |
|
|
429
|
+
| `options` | `{
|
|
430
|
+
/** Follow log output (stream) */
|
|
431
|
+
follow?: boolean
|
|
432
|
+
/** Number of lines to show from the end of the logs */
|
|
433
|
+
tail?: number
|
|
434
|
+
/** Show logs since a timestamp or relative time */
|
|
435
|
+
since?: string
|
|
436
|
+
/** Prepend a timestamp to each log line */
|
|
437
|
+
timestamps?: boolean
|
|
438
|
+
}` | | Log retrieval options |
|
|
439
|
+
|
|
440
|
+
`{
|
|
441
|
+
/** Follow log output (stream) */
|
|
442
|
+
follow?: boolean
|
|
443
|
+
/** Number of lines to show from the end of the logs */
|
|
444
|
+
tail?: number
|
|
445
|
+
/** Show logs since a timestamp or relative time */
|
|
446
|
+
since?: string
|
|
447
|
+
/** Prepend a timestamp to each log line */
|
|
448
|
+
timestamps?: boolean
|
|
449
|
+
}` properties:
|
|
450
|
+
|
|
451
|
+
| Property | Type | Description |
|
|
452
|
+
|----------|------|-------------|
|
|
453
|
+
| `follow` | `any` | Follow log output (stream) |
|
|
454
|
+
| `tail` | `any` | Number of lines to show from the end of the logs |
|
|
455
|
+
| `since` | `any` | Show logs since a timestamp or relative time (e.g. '10m', '2024-01-01T00:00:00') |
|
|
456
|
+
| `timestamps` | `any` | Prepend a timestamp to each log line |
|
|
457
|
+
|
|
458
|
+
**Returns:** `Promise<string>`
|
|
459
|
+
|
|
460
|
+
```ts
|
|
461
|
+
const logs = await docker.getLogs('my-app', { tail: 100, timestamps: true })
|
|
462
|
+
console.log(logs)
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
### getSystemInfo
|
|
468
|
+
|
|
469
|
+
Get Docker system information (engine version, storage driver, OS, etc.).
|
|
470
|
+
|
|
471
|
+
**Returns:** `Promise<any>`
|
|
472
|
+
|
|
473
|
+
```ts
|
|
474
|
+
const info = await docker.getSystemInfo()
|
|
475
|
+
console.log(info.ServerVersion)
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
### prune
|
|
481
|
+
|
|
482
|
+
Prune unused Docker resources. When no specific resource type is selected, falls back to `docker system prune`.
|
|
483
|
+
|
|
484
|
+
**Parameters:**
|
|
485
|
+
|
|
486
|
+
| Name | Type | Required | Description |
|
|
487
|
+
|------|------|----------|-------------|
|
|
488
|
+
| `options` | `{
|
|
489
|
+
/** Prune stopped containers */
|
|
490
|
+
containers?: boolean
|
|
491
|
+
/** Prune dangling images */
|
|
492
|
+
images?: boolean
|
|
493
|
+
/** Prune unused volumes */
|
|
494
|
+
volumes?: boolean
|
|
495
|
+
/** Prune unused networks */
|
|
496
|
+
networks?: boolean
|
|
497
|
+
/** Prune all resource types */
|
|
498
|
+
all?: boolean
|
|
499
|
+
/** Skip confirmation prompts for image pruning */
|
|
500
|
+
force?: boolean
|
|
501
|
+
}` | | Pruning options |
|
|
502
|
+
|
|
503
|
+
`{
|
|
504
|
+
/** Prune stopped containers */
|
|
505
|
+
containers?: boolean
|
|
506
|
+
/** Prune dangling images */
|
|
507
|
+
images?: boolean
|
|
508
|
+
/** Prune unused volumes */
|
|
509
|
+
volumes?: boolean
|
|
510
|
+
/** Prune unused networks */
|
|
511
|
+
networks?: boolean
|
|
512
|
+
/** Prune all resource types */
|
|
513
|
+
all?: boolean
|
|
514
|
+
/** Skip confirmation prompts for image pruning */
|
|
515
|
+
force?: boolean
|
|
516
|
+
}` properties:
|
|
517
|
+
|
|
518
|
+
| Property | Type | Description |
|
|
519
|
+
|----------|------|-------------|
|
|
520
|
+
| `containers` | `any` | Prune stopped containers |
|
|
521
|
+
| `images` | `any` | Prune dangling images |
|
|
522
|
+
| `volumes` | `any` | Prune unused volumes |
|
|
523
|
+
| `networks` | `any` | Prune unused networks |
|
|
524
|
+
| `all` | `any` | Prune all resource types (containers, images, volumes, networks) |
|
|
525
|
+
| `force` | `any` | Skip confirmation prompts for image pruning |
|
|
526
|
+
|
|
527
|
+
**Returns:** `Promise<void>`
|
|
528
|
+
|
|
529
|
+
```ts
|
|
530
|
+
await docker.prune({ all: true })
|
|
531
|
+
await docker.prune({ containers: true, images: true })
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
### enable
|
|
537
|
+
|
|
538
|
+
Initialize the Docker feature by checking availability and optionally refreshing state.
|
|
539
|
+
|
|
540
|
+
**Parameters:**
|
|
541
|
+
|
|
542
|
+
| Name | Type | Required | Description |
|
|
543
|
+
|------|------|----------|-------------|
|
|
544
|
+
| `options` | `any` | | Enable options passed to the base Feature |
|
|
545
|
+
|
|
546
|
+
**Returns:** `Promise<this>`
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
## Getters
|
|
551
|
+
|
|
552
|
+
| Property | Type | Description |
|
|
553
|
+
|----------|------|-------------|
|
|
554
|
+
| `proc` | `any` | Get the proc feature for executing shell commands |
|
|
555
|
+
|
|
556
|
+
## State (Zod v4 schema)
|
|
557
|
+
|
|
558
|
+
| Property | Type | Description |
|
|
559
|
+
|----------|------|-------------|
|
|
560
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
561
|
+
| `containers` | `array` | List of known Docker containers |
|
|
562
|
+
| `images` | `array` | List of known Docker images |
|
|
563
|
+
| `isDockerAvailable` | `boolean` | Whether Docker CLI is available on this system |
|
|
564
|
+
| `lastError` | `string` | Last error message from a Docker operation |
|
|
565
|
+
|
|
566
|
+
## Examples
|
|
567
|
+
|
|
568
|
+
**features.docker**
|
|
569
|
+
|
|
570
|
+
```ts
|
|
571
|
+
const docker = container.feature('docker', { enable: true })
|
|
572
|
+
await docker.checkDockerAvailability()
|
|
573
|
+
const containers = await docker.listContainers({ all: true })
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
**checkDockerAvailability**
|
|
579
|
+
|
|
580
|
+
```ts
|
|
581
|
+
const available = await docker.checkDockerAvailability()
|
|
582
|
+
if (!available) console.log('Docker is not installed or not running')
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
**listContainers**
|
|
588
|
+
|
|
589
|
+
```ts
|
|
590
|
+
const running = await docker.listContainers()
|
|
591
|
+
const all = await docker.listContainers({ all: true })
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
**listImages**
|
|
597
|
+
|
|
598
|
+
```ts
|
|
599
|
+
const images = await docker.listImages()
|
|
600
|
+
console.log(images.map(i => `${i.repository}:${i.tag}`))
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
**startContainer**
|
|
606
|
+
|
|
607
|
+
```ts
|
|
608
|
+
await docker.startContainer('my-app')
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
**stopContainer**
|
|
614
|
+
|
|
615
|
+
```ts
|
|
616
|
+
await docker.stopContainer('my-app')
|
|
617
|
+
await docker.stopContainer('my-app', 30) // wait up to 30s
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
**removeContainer**
|
|
623
|
+
|
|
624
|
+
```ts
|
|
625
|
+
await docker.removeContainer('old-container')
|
|
626
|
+
await docker.removeContainer('stubborn-container', { force: true })
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
**runContainer**
|
|
632
|
+
|
|
633
|
+
```ts
|
|
634
|
+
const containerId = await docker.runContainer('nginx:latest', {
|
|
635
|
+
name: 'web',
|
|
636
|
+
ports: ['8080:80'],
|
|
637
|
+
detach: true,
|
|
638
|
+
environment: { NODE_ENV: 'production' }
|
|
639
|
+
})
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
**execCommand**
|
|
645
|
+
|
|
646
|
+
```ts
|
|
647
|
+
const result = await docker.execCommand('my-app', ['ls', '-la', '/app'])
|
|
648
|
+
console.log(result.stdout)
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
**pullImage**
|
|
654
|
+
|
|
655
|
+
```ts
|
|
656
|
+
await docker.pullImage('node:20-alpine')
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
**removeImage**
|
|
662
|
+
|
|
663
|
+
```ts
|
|
664
|
+
await docker.removeImage('nginx:latest')
|
|
665
|
+
await docker.removeImage('old-image', { force: true })
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
**buildImage**
|
|
671
|
+
|
|
672
|
+
```ts
|
|
673
|
+
await docker.buildImage('./project', {
|
|
674
|
+
tag: 'my-app:latest',
|
|
675
|
+
buildArgs: { NODE_ENV: 'production' }
|
|
676
|
+
})
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
**getLogs**
|
|
682
|
+
|
|
683
|
+
```ts
|
|
684
|
+
const logs = await docker.getLogs('my-app', { tail: 100, timestamps: true })
|
|
685
|
+
console.log(logs)
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
**getSystemInfo**
|
|
691
|
+
|
|
692
|
+
```ts
|
|
693
|
+
const info = await docker.getSystemInfo()
|
|
694
|
+
console.log(info.ServerVersion)
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
**prune**
|
|
700
|
+
|
|
701
|
+
```ts
|
|
702
|
+
await docker.prune({ all: true })
|
|
703
|
+
await docker.prune({ containers: true, images: true })
|
|
704
|
+
```
|
|
705
|
+
|