Claude Code Docker サンドボックス
DaguのDockerサンドボックスからClaude Codeを実行する。
Claude Codeをランナーイメージにインストールし、claudeバイナリを確認して、必要なステップだけに認証情報を渡します。Daguはスケジュール、ログ、リトライ、コンテナ境界をYAMLで管理します。
Docker内のClaude Codeステップ
steps:
- id: claude_review
action: harness.run
container:
image: dagu-claude-runner:local
pull_policy: never
working_dir: /workspace
volumes:
- .:/workspace:ro
env:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
with:
provider: claude
model: sonnet
prompt: |
Review this repository and summarize the highest-risk issues.公式の@anthropic-ai/claude-code npmパッケージを使います。
モデル呼び出し前にDagu経由でclaude --versionを確認します。
ANTHROPIC_API_KEYをcontainerステップの境界で渡します。
認証情報の範囲に応じてルートレベルまたはステップレベルcontainerを選べます。
01
ランナーイメージ
Claude CodeはNode.js 18以降でグローバルnpmパッケージとしてインストールできます。この例ではNode 22を使い、イメージビルド中にバイナリを確認します。
Dockerfile
FROM node:22-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates git ripgrep bash \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
RUN claude --version
WORKDIR /workspace
ENTRYPOINT []
CMD ["bash"]02
動作確認
まずshell providerで、Claudeへプロンプトを送らずにイメージとバイナリパスを確認します。
バージョン確認DAG
type: graph
harnesses:
shell:
binary: sh
prefix_args:
- -c
prompt_mode: arg
steps:
- id: claude_version
action: harness.run
container:
image: dagu-claude-runner:local
pull_policy: never
with:
provider: shell
prompt: |
set -eu
claude --version
command -v claude03
認証情報
単純な非対話実行ではANTHROPIC_API_KEYをコンテナに渡します。他のClaude Code認証方法も、必要なファイルや環境変数が同じコンテナ内にあれば使えます。
04
コンテナの範囲
単発のClaude Codeタスクにはステップレベルcontainerを優先します。前段のbuildやtestも同じイメージで実行してからClaude Codeがworkspaceを読む場合だけ、ルートレベルcontainerを使います。