OpenCode Docker-Sandbox
OpenCode aus einer Dagu Docker-Sandbox ausfuehren.
Der non-interactive OpenCode-Befehl ist opencode run. Lege opencode-Binary und Provider-Credentials in einen Runner Container und rufe provider: opencode aus Dagu harness.run auf.
steps:
- id: opencode_review
action: harness.run
container:
image: dagu-opencode-runner:local
pull_policy: never
working_dir: /workspace
volumes:
- .:/workspace:ro
- ${HOME}/.local/share/opencode:/root/.local/share/opencode:ro
with:
provider: opencode
model: anthropic/claude-sonnet-4-5
prompt: |
Review this repository and summarize the highest-risk issues.Installiert OpenCode mit dem npm-Package opencode-ai.
Prueft opencode --version ueber Dagu vor Modellaufrufen.
Kann ~/.local/share/opencode/auth.json fuer konfigurierte Provider mounten.
Kann auch provider-spezifische Environment Variables in container.env nutzen.
Runner Image
Installiere OpenCode im Runner Image und pruefe das Binary im Build. Der leere Entrypoint laesst Dagu den Befehl steuern.
FROM node:22-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates git bash \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g opencode-ai
RUN opencode --version
WORKDIR /workspace
ENTRYPOINT []
CMD ["bash"]Smoke Test
Vor dem Mounten von Credentials fuehre einen shell provider aus, der OpenCode-Version und Binary-Pfad im Container ausgibt.
type: graph
harnesses:
shell:
binary: sh
prefix_args:
- -c
prompt_mode: arg
steps:
- id: opencode_version
action: harness.run
container:
image: dagu-opencode-runner:local
pull_policy: never
with:
provider: shell
prompt: |
set -eu
opencode --version
command -v opencodeCredentials
OpenCode speichert Provider-Logins in ~/.local/share/opencode/auth.json und liest Provider-Keys auch aus Environment oder Projekt-.env. Mounte oder uebergib nur, was der gewaehlte Provider braucht.
Model Name
OpenCode Model Names nutzen provider/model. Das Beispiel nutzt anthropic/claude-sonnet-4-5; aendere es auf ein Modell, das in deiner OpenCode Provider-Konfiguration verfuegbar ist.
Weitere Sandbox-Seiten
OpenCode Docker-Sandbox
Shared und per-step Docker Container verstehen.
Codex in DockerCodex mit file-backed ChatGPT Login oder CODEX_API_KEY ausfuehren.
Claude Code in DockerAnthropic Credentials an einen Claude Code Schritt uebergeben.
Eigene CLI in DockerDasselbe Muster fuer eine CLI nutzen, die Dagu nicht namentlich kennt.