Claude Code Docker sandbox

شغل Claude Code من Docker sandbox في Dagu.

ثبت Claude Code في runner image، تحقق من binary باسم claude، ومرر credentials فقط إلى خطوة harness التي تحتاجها. يحتفظ Dagu بالجدولة، السجلات، retry policy، وحدود container في YAML.

خطوة Claude Code داخل 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 الرسمية @anthropic-ai/claude-code.

يتحقق من claude --version عبر Dagu قبل استدعاءات النموذج.

يمرر ANTHROPIC_API_KEY عند حدود خطوة container.

يعمل مع root-level أو step-level container حسب نطاق credential.

01

صورة runner

يمكن تثبيت Claude Code كحزمة npm عامة على Node.js 18 أو أحدث. المثال يستخدم Node 22 ويتحقق من binary أثناء 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

شغل shell provider أولا للتحقق من الصورة ومسار binary بدون إرسال prompt إلى 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 claude
03

Credentials

للتشغيل غير التفاعلي البسيط، مرر ANTHROPIC_API_KEY إلى الحاوية. يمكن استخدام طرق auth أخرى في Claude Code إذا كانت ملفاتها أو متغيراتها متاحة داخل نفس الحاوية.

04

نطاق الحاوية

فضل step-level container لمهمة Claude Code واحدة. استخدم root-level container فقط إذا كانت خطوات build أو test يجب أن تعمل في نفس الصورة قبل أن يقرأ Claude Code workspace.