Cara Setup Claude Code di Docker Container untuk Developer
Autonomous AI coding agent seperti Claude Code mampu membaca kode, menjalankan perintah, hingga melakukan refactoring otomatis yang meningkatkan produktivitas developer.
Namun, kemampuan ini juga membawa risiko jika terjadi kesalahan pada sistem atau environment. Untuk itu, Docker digunakan sebagai solusi agar proses tetap aman melalui container isolation.
Nah, dalam artikel ini kita akan membahas tutorial cara menjalankan Claude Code di Docker.
Mengapa Harus Menggunakan Docker untuk Claude Code?
Sebelum masuk ke teknis, penting memahami alasan utamanya.
1. Keamanan
Docker memberikan isolasi:
-
Claude hanya bisa akses file yang di-mount
-
Tidak bisa sembarangan menyentuh sistem host
-
Credential sensitif tetap aman
2. Environment Isolation
Docker memastikan Claude Code hanya bisa mengakses file yang Anda izinkan (melalui volume mount).
3. Reproducibility
-
Environment selalu konsisten
-
Bisa dijalankan di mana saja (dev, staging, production)
4. Disposable Environment
-
Jika terjadi error → container tinggal dihapus
-
Tidak merusak environment utama
Arsitektur: Cara Claude Code Bekerja di Docker
Alur sederhananya:
-
Anda menjalankan command dari host
-
Docker membuat container
-
Claude Code berjalan di dalam container
-
Workspace di-mount dari host ke container
-
Output ditulis kembali ke workspace
-
Container dihapus setelah selesai
Poin penting:
-
File project tetap ada
-
Dependency sementara akan hilang
Persiapan Awal (Wajib)
Sebelum mulai, pastikan Anda sudah memiliki:
|
Kebutuhan |
Keterangan |
|
Docker |
Docker Desktop / Docker Engine |
|
Node.js |
Minimal versi 18 |
|
API Key |
Anthropic API Key |
|
Terminal |
Bash / Zsh / PowerShell |
Cek Docker Berjalan
docker run --rm hello-world
Jika muncul Hello from Docker!, berarti siap lanjut.
Setup API Key dengan Aman
Jangan pernah menaruh API key di Dockerfile.
Gunakan environment variable:
docker run --rm -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" my-claude-image
Workspace initialization
Buat clean workspace
mkdir ~/claude-docker-tutorial
cd ~/claude-docker-tutorial
echo "# My Project" > README.md
echo "def hello(): return 'world'" > app.py
Hindari menyimpan:
-
.env
-
credential
-
data sensitif
Cara Running Claude Code di Docker
Step 1: Buat Dockerfile
Buat file Dockerfile:
FROM node:20-slim
# Create a non-root user for safer execution
RUN useradd -m -u 1001 claude
# Install Claude Code CLI globally
RUN npm install -g @anthropic-ai/claude-code
# Set the working directory
WORKDIR /workspace
# Switch to non-root user
USER claude
ENTRYPOINT ["claude"]
Penjelasan:
|
Bagian |
Fungsi |
|
node:20-slim |
Base image stabil |
|
useradd |
Hindari root |
|
npm install |
Install Claude Code |
|
WORKDIR |
Folder kerja |
|
ENTRYPOINT |
Jalankan CLI |
Step 2: Build Docker Image
Jalankan:
docker build -t claude-code:latest .
Jika berhasil, image siap digunakan.
Step 3: Menjalankan Claude Code (Read-Only)
Untuk melihat isi project:
docker run --rm\
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
-v $(pwd):/workspace\
claude-code:latest\
"List the files in this workspace and describe what each one does."
Penjelasan parameter:
|
Flag |
Fungsi |
|
--rm |
Auto hapus container |
|
-e |
Inject API key |
|
-v |
Mount folder |
|
claude-code |
Nama image |
Step 4: Menjalankan Write Operation
Tambahkan parameter berikut:
docker run --rm\
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
-v $(pwd):/workspace\
-u $(id -u):$(id -g) \
claude-code:latest\
--dangerously-skip-permissions\
"Add a docstring to the hello function in app.py."
Kenapa perlu tambahan ini?
|
Flag |
Fungsi |
|
-u UID:GID |
Permission write |
|
--dangerously-skip-permissions |
Non-interactive mode |
⚠️ Aman digunakan karena sudah diisolasi oleh Docker.
Step 5: Verifikasi Hasil
Cek file:
cat app.py
Jika ada perubahan → setup berhasil 🎉
Step 6: Setup Multi-Service dengan Docker Compose
Untuk project kompleks (database, API, dll), gunakan Docker Compose.
Contoh docker-compose.yml
services:
Claude:
build: .
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
volumes:
- ./workspace:/workspace
depends_on:
db:
condition: service_healthy
networks:
- app-network
website:
image: python:3.12-slim
working_dir: /app
volumes:
- ./workspace:/app
command: python -m http.server 8080
ports:
- "8080:8080"
networks:
- app-network
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: appdb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d appdb"]
interval: 5s
timeout: 3s
retries: 5
networks:
- app-network
networks:
app-network:
driver: bridge
Jalankan Services
docker compose up -d web db
Jalankan Claude
docker compose run --rm \
Claude\
--dangerously-skip-permissions\
"Check the database connection and summarize the schema in README.md."
Step 7: Manajemen Cleanup
|
Command |
Fungsi |
|
docker compose down |
Stop semua service |
|
docker container prune |
Hapus container stop |
|
docker compose down -v |
Reset total (hapus data DB) |
|
docker ps |
Cek container aktif |
Best Practices Keamanan (WAJIB)
❌ Jangan Pernah Lakukan Ini:
-
Mount /var/run/docker.sock
-
Simpan API key di Dockerfile
-
Gunakan root user
✅ Lakukan ini:
-
Gunakan non-root user
-
Batasi volume mount
-
Gunakan environment variable
Optimasi Build Docker
Gunakan multi-stage build:
FROM node:20-slim AS builder
RUN npm install -g @anthropic-ai/claude-code
FROM node:20-slim
COPY --from=builder /usr/local /usr/local
RUN useradd -m -u 1001 claude
USER claude
WORKDIR /workspace
ENTRYPOINT ["claude"]
Troubleshooting
|
Masalah |
Solusi |
|
API tidak bisa diakses |
Cek network Docker |
|
File tidak terbaca |
Cek volume mount |
|
Perubahan tidak update |
Gunakan --no-cache |
|
Service tidak connect |
Gunakan nama service, bukan localhost |
|
API error |
Cek API key |
Kapan Harus Pakai Docker vs Compose?
|
Kebutuhan |
Gunakan |
|
Script sederhana |
Docker biasa |
|
Fullstack app |
Docker Compose |
|
Team environment |
Devcontainer |
FAQ:
1. Apa itu Claude Code Docker?
Claude Code Docker adalah cara menjalankan AI coding agent dalam container agar lebih aman dan terisolasi.
2. Apakah aman menjalankan AI agent di Docker?
Ya, selama tidak membuka akses berbahaya seperti docker.sock.
3. Kapan harus pakai Docker Compose?
Saat project membutuhkan database, API, atau multi-service environment.
4. Apakah Claude Code bisa merusak sistem?
Tanpa isolasi: bisa.
Dengan Docker: risikonya sangat kecil.
Kesimpulan
Menjalankan Claude Code di Docker bukan hanya soal teknis, tapi soal keamanan dan kontrol.
Dengan pendekatan container:
- Anda bisa menjalankan AI agent tanpa risiko
- Environment tetap bersih dan konsisten
- Workflow lebih profesional dan scalable
Untuk penggunaan sehari-hari:
- Gunakan single container untuk task sederhana
- Gunakan Docker Compose untuk aplikasi kompleks
🔥 Upgrade Skill AI & DevOps Anda
Ingin menguasai lebih dalam:
- AI Coding Agents (Claude, GPT, dll)
- Docker & Kubernetes
- Secure Dev Environment
Ikuti pelatihan intensif IT profesional sekarang juga dan upgrade skill Anda ke level advanced. Berikut pelatihan yang kami rekomendasikan:
Silakan konsultasikan kebutuhan Anda bersama kami dengan klik link berikut: https://bit.ly/kontaksuhu
