Claude Code Docker-песочница

Запускайте Claude Code из Docker-песочницы Dagu.

Установите Claude Code в runner image, проверьте бинарь claude и передайте credentials только нужному harness шагу. Dagu хранит schedule, logs, retry policy и container boundary в YAML.

Claude Code step в Docker
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.

Использует официальный npm package @anthropic-ai/claude-code.

Проверяет claude --version через Dagu до вызовов модели.

Передает ANTHROPIC_API_KEY на границе container step.

Работает с root-level или step-level container в зависимости от scope credentials.

01

Runner image

Claude Code можно установить как global npm package на Node.js 18 или новее. Пример использует Node 22 и проверяет бинарь при build.

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

Smoke test

Сначала запустите shell provider, чтобы проверить image и binary path без отправки prompt в Claude.

Version check 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 claude
03

Credentials

Для простого non-interactive run передайте ANTHROPIC_API_KEY в контейнер. Другие способы auth Claude Code также возможны, если нужные файлы или переменные доступны внутри контейнера.

04

Container scope

Для одной Claude Code задачи чаще подходит step-level container. Root-level container нужен только если build или test шаги должны выполняться в том же image до чтения workspace Claude Code.