OpenCode Docker サンドボックス
DaguのDockerサンドボックスからOpenCodeを実行する。
OpenCodeの非対話コマンドはopencode runです。opencodeバイナリとプロバイダ認証情報をランナーコンテナに入れ、Daguのharness.runステップからprovider: opencodeを呼び出します。
Docker内のOpenCodeステップ
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.opencode-ai npmパッケージでOpenCodeをインストールします。
モデル呼び出し前にDagu経由でopencode --versionを確認します。
設定済みプロバイダには~/.local/share/opencode/auth.jsonをマウントできます。
プロバイダ固有の環境変数をcontainer.envで渡すこともできます。
01
ランナーイメージ
OpenCodeをランナーイメージにインストールし、ビルド時にバイナリを確認します。空のentrypointによりDaguがコマンドを制御します。
Dockerfile
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"]02
動作確認
認証情報をマウントする前に、コンテナ内からOpenCodeのバージョンとバイナリパスを表示するshell providerを実行します。
バージョン確認DAG
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 opencode03
認証情報
OpenCodeはプロバイダのログイン情報を~/.local/share/opencode/auth.jsonに保存し、環境変数やプロジェクトの.envからもプロバイダキーを読みます。選択したプロバイダに必要なものだけをマウントまたは渡します。
04
モデル名
OpenCodeのモデル名はprovider/model形式です。例ではanthropic/claude-sonnet-4-5を使っています。OpenCode設定で利用できるモデルに変更してください。