DevContainer開発環境でCaludeを使用するとき

2025/11/03 時点での設定内容のメモ

Dockerfile

  • 使用される環境: Node20
    • Dockerfileで定義

devcontainer.json

主要な設定項目:

  • name (2行目): コンテナの表示名

  • build (3-11行目): Dockerイメージのビルド設定

    • dockerfile: 使用するDockerfile
    • args: ビルド時の引数
      • TZ: タイムゾーン(デフォルト: America/Los_Angeles)
      • CLAUDE_CODE_VERSION: Claudeのバージョン
      • GIT_DELTA_VERSION: git-deltaツールのバージョン
      • ZSH_IN_DOCKER_VERSION: zshの設定バージョン
  • runArgs (12-15行目): コンテナ実行時の引数

    • —cap-add=NET_ADMIN: ネットワーク管理の権限を付与(ファイアウォール設定に必要)
    • —cap-add=NET_RAW: RAWソケットの使用権限(iptables/ipsetに必要)
  • customizations.vscode (16-41行目): VS Code固有の設定

    • extensions: 自動インストールされる拡張機能
      • Claude Code、ESLint、Prettier、GitLens
    • settings: エディタ設定
      • 保存時の自動フォーマット
      • デフォルトシェルをzshに設定
  • remoteUser (43行目): コンテナ内での実行ユーザー(node)

  • mounts (44-47行目): 永続化ボリューム

    • bashコマンド履歴の保存先
    • Claude設定ファイルの保存先
  • containerEnv (48-52行目): 環境変数

    • NODE_OPTIONS: Node.jsのメモリ制限(4GB)
    • CLAUDE_CONFIG_DIR: Claude設定ディレクトリ
    • POWERLEVEL9K_DISABLE_GITSTATUS: gitstatus無効化
  • workspaceMount & workspaceFolder (53-54行目): ワークスペースのマウント設定

  • postStartCommand: コンテナ起動後に実行されるコマンド

    • ファイアウォール設定スクリプト(init-firewall.sh)を実行
  • waitFor: postStartCommandの完了を待つ設定

  "postStartCommand": "sudo /usr/local/bin/init-firewall.sh",
    "waitFor": "postStartCommand"