Agent-almanac setup-docker-compose
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/ja/skills/setup-docker-compose" ~/.claude/skills/pjt222-agent-almanac-setup-docker-compose-dfe6e2 && rm -rf "$T"
manifest:
i18n/ja/skills/setup-docker-compose/SKILL.mdsource content
Docker Composeのセットアップ
R開発およびデプロイ環境用のDocker Composeを設定する。
使用タイミング
- R以外のサービス(データベース、API)と並行してRを実行する場合
- 再現可能な開発環境のセットアップ
- RベースMCPサーバーコンテナのオーケストレーション
- 環境変数とボリュームマウントの管理
入力
- 必須: Rサービス用Dockerfile
- 必須: マウントするプロジェクトディレクトリ
- 任意: 追加サービス(データベース、キャッシュ、Webサーバー)
- 任意: 環境変数の設定
手順
ステップ1: docker-compose.ymlの作成
version: '3.8' services: r-dev: build: context: . dockerfile: Dockerfile container_name: r-dev image: r-dev:latest volumes: - .:/workspace - renv-cache:/workspace/renv/cache stdin_open: true tty: true environment: - TERM=xterm-256color - R_LIBS_USER=/workspace/renv/library - RENV_PATHS_CACHE=/workspace/renv/cache command: R restart: unless-stopped volumes: renv-cache: driver: local
期待結果: Rサービスが定義された
docker-compose.ymlファイルが存在し、プロジェクトディレクトリとrenvキャッシュのボリュームマウント、Rライブラリパスの環境変数が含まれている。
失敗時: YAML構文が無効な場合、
docker compose configで検証する。インデントにスペース(タブではなく)を使用し、特殊文字を含むすべての文字列値をクォートする。
ステップ2: 追加サービスの追加(必要な場合)
services: r-dev: # ... 上記と同様 depends_on: - postgres environment: - DB_HOST=postgres - DB_PORT=5432 postgres: image: postgres:16 container_name: r-postgres environment: POSTGRES_DB: analysis POSTGRES_USER: ruser POSTGRES_PASSWORD_FILE: /run/secrets/db_password volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" volumes: renv-cache: pgdata:
期待結果: 追加サービス(例: PostgreSQL)が独自のボリューム、環境変数、ポートマッピングで定義されている。Rサービスが新しいサービスを参照する
depends_onを持っている。
失敗時: データベースサービスの起動に失敗した場合、
docker compose logs postgresで初期化エラーを確認する。POSTGRES_PASSWORD_FILEのような環境変数が有効なシークレットを指しているか確認するか、開発環境ではPOSTGRES_PASSWORDに切り替える。
ステップ3: ネットワークの設定
localhostアクセスが必要なサービス(例: MCPサーバー)の場合:
services: r-dev: network_mode: "host"
分離されたネットワーキングの場合:
services: r-dev: networks: - app-network ports: - "3000:3000" networks: app-network: driver: bridge
期待結果: ネットワーキングが適切に設定されている:localhostアクセスが必要なサービス(MCPサーバー)には
hostモード、分離されたサービスには明示的なポートマッピング付きのブリッジネットワーキング。
失敗時: サービス間で通信できない場合、同じネットワーク上にあることを確認する。ブリッジネットワーキングでは、ホスト名としてサービス名を使用する(
localhostではなくpostgresなど)。ホストモードではlocalhostを使用し、ポートが競合しないことを確認する。
ステップ4: 環境変数の管理
.envファイル(git-ignored)を作成する:
R_VERSION=4.5.0 GITHUB_PAT=your_token_here
composeで参照する:
services: r-dev: build: args: R_VERSION: ${R_VERSION} env_file: - .env
期待結果: プロジェクト固有の変数を含む
.envファイル(git-ignored)が存在し、docker-compose.ymlがenv_fileまたは変数展開(${VAR})で参照している。
失敗時: 変数が解決されない場合、
.envファイルがdocker-compose.ymlと同じディレクトリにあることを確認する。docker compose configを実行して、すべての変数が展開された解決済みの設定を確認する。
ステップ5: ビルドと実行
# イメージのビルド docker compose build # サービスの起動 docker compose up -d # Rセッションにアタッチ docker compose exec r-dev R # ログの表示 docker compose logs -f r-dev # サービスの停止 docker compose down
期待結果: すべてのサービスが起動する。Rセッションにアクセス可能。
失敗時: 起動エラーは
docker compose logsで確認する。よくある問題: ポートの競合、環境変数の不足。
ステップ6: 開発用オーバーライドの作成
ローカル開発設定用の
docker-compose.override.ymlを作成する:
services: r-dev: volumes: - /path/to/local/packages:/extra-packages environment: - DEBUG=true
これは
docker-compose.ymlと自動的にマージされる。
期待結果: 開発固有の設定(追加ボリューム、デバッグフラグ)を含む
docker-compose.override.ymlファイルが存在し、docker compose up実行時に自動的に適用される。
失敗時: オーバーライドが反映されない場合、ファイル名が正確に
docker-compose.override.ymlであることを確認する。docker compose configを実行してマージを確認する。明示的なオーバーライドファイルの場合はdocker compose -f docker-compose.yml -f custom-override.yml upを使用する。
バリデーション
-
がエラーなく完了するdocker compose build -
がすべてのサービスを起動するdocker compose up - ボリュームマウントがホストとコンテナ間でファイルを正しく共有する
- 環境変数がコンテナ内で利用可能
- サービス間で通信可能
-
がすべてを正常に停止するdocker compose down
よくある落とし穴
- ボリュームマウントの権限: Linuxコンテナがrootとしてファイルを作成する場合がある。
ディレクティブを使用するか権限を修正するuser: - ポートの競合: ホスト上で同じポートを使用しているサービスがないか確認する
- Docker Desktop vs CLI:
(v2)とdocker compose
(v1)。v2を使用するdocker-compose - WSLパスマウント: WSLからWindowsディレクトリをマウントする場合は
パスを使用する/mnt/c/... - 名前付きボリューム vs バインドマウント: 名前付きボリュームはリビルド間で永続化される;バインドマウントはホストの変更を即座に反映する
関連スキル
- composeが参照するDockerfileの作成create-r-dockerfile
- MCPサーバー用のcompose設定containerize-mcp-server
- composeビルドの高速化optimize-docker-build-cache