version: '3.8' services: claude-arch: build: context: . dockerfile: Dockerfile image: claude-archlinux:latest container_name: claude-arch-sandbox hostname: claude-arch # ボリュームマウント volumes: # プロジェクトディレクトリをマウント - ../../:/workspace:rw # ホームディレクトリの設定ファイルを共有(オプション) - ~/.config/nvim:/home/claude/.config/nvim:ro - ~/.zshrc:/home/claude/.zshrc:ro # Dockerソケット(Docker in Dockerを使う場合) # - /var/run/docker.sock:/var/run/docker.sock # pacmanキャッシュを永続化(ダウンロード時間短縮) - pacman-cache:/var/cache/pacman/pkg # yayキャッシュを永続化 - yay-cache:/home/claude/.cache/yay # 環境変数 environment: - LANG=ja_JP.UTF-8 - TZ=Asia/Tokyo - TERM=xterm-256color # Claude Code用の環境変数 - CLAUDE_SAFE_MODE=true - CLAUDE_CONTAINER=true # リソース制限 deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '1' memory: 2G # セキュリティオプション security_opt: - no-new-privileges:true # AppArmorプロファイル(利用可能な場合) # - apparmor:docker-default # ネットワーク設定 networks: - claude-net # 対話型シェルの有効化 stdin_open: true tty: true # 読み取り専用ルートファイルシステム(より安全だが制限的) # read_only: true # tmpfs: # - /tmp # - /run # - /home/claude/.cache # ユーザー指定 user: claude # ヘルスチェック healthcheck: test: ["CMD", "echo", "healthy"] interval: 30s timeout: 3s retries: 3 # 開発用データベース(必要に応じて) # postgres: # image: postgres:15-alpine # container_name: claude-postgres # environment: # POSTGRES_DB: dev # POSTGRES_USER: claude # POSTGRES_PASSWORD: claude-dev-pass # volumes: # - postgres-data:/var/lib/postgresql/data # networks: # - claude-net # ボリューム定義 volumes: pacman-cache: driver: local yay-cache: driver: local # postgres-data: # driver: local # ネットワーク定義 networks: claude-net: driver: bridge ipam: config: - subnet: 172.25.0.0/24