Sandbox Docker do Claude Code

Execute Claude Code a partir de um sandbox Docker do Dagu.

Instale Claude Code em uma imagem runner, verifique o binario claude e passe credenciais apenas para o passo harness que precisa delas. O Dagu mantem agenda, logs, retry policy e limite de container em YAML.

Passo Claude Code no 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.

Usa o pacote npm oficial @anthropic-ai/claude-code.

Verifica claude --version via Dagu antes de chamadas ao modelo.

Passa ANTHROPIC_API_KEY na fronteira do passo container.

Funciona com container raiz ou por passo conforme o escopo da credencial.

01

Imagem runner

Claude Code pode ser instalado como pacote npm global em Node.js 18 ou superior. O exemplo usa Node 22 e verifica o binario durante o 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

Execute primeiro um shell provider para verificar a imagem e o caminho do binario sem enviar prompt ao Claude.

DAG de verificacao de versao
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

Credenciais

Para um run nao interativo simples, passe ANTHROPIC_API_KEY ao container. Outros metodos de auth do Claude Code podem ser usados se seus arquivos ou variaveis estiverem disponiveis no mesmo container.

04

Escopo do container

Prefira container por passo para uma unica tarefa Claude Code. Use container raiz apenas se passos de build ou test precisarem rodar na mesma imagem antes de Claude Code ler o workspace.