返回技能列表

setup-docker-compose

pjt222
更新于 2 days ago
8 次查看
17
2
17
在 GitHub 上查看
文档apimcp

关于

This Claude Skill sets up Docker Compose configurations for multi-container R development environments. It handles service definitions, volume mounts, networking, and environment variables for both development and production setups. Use it when orchestrating R-based MCP server containers or managing R projects alongside other services like databases and APIs.

快速安装

Claude Code

推荐
主要方式
npx skills add pjt222/agent-almanac -a claude-code
插件命令备选方式
/plugin add https://github.com/pjt222/agent-almanac
Git 克隆备选方式
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-docker-compose

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档


name: setup-docker-compose description: > マルチコンテナR開発環境用のDocker Composeを設定する。サービス定義、ボリュームマウント、 ネットワーキング、環境変数、開発環境と本番環境の設定をカバーする。R以外のサービス (データベース、API)と並行してRを実行する場合、再現可能なR開発環境のセットアップ、 RベースMCPサーバーコンテナのオーケストレーション、またはRプロジェクトの環境変数と ボリュームマウント管理に使用する。 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: Docker tags: docker-compose, orchestration, development, volumes locale: ja source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

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.ymlenv_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: docker compose(v2)とdocker-compose(v1)。v2を使用する
  • WSLパスマウント: WSLからWindowsディレクトリをマウントする場合は/mnt/c/...パスを使用する
  • 名前付きボリューム vs バインドマウント: 名前付きボリュームはリビルド間で永続化される;バインドマウントはホストの変更を即座に反映する

関連スキル

  • create-r-dockerfile - composeが参照するDockerfileの作成
  • containerize-mcp-server - MCPサーバー用のcompose設定
  • optimize-docker-build-cache - composeビルドの高速化

GitHub 仓库

pjt222/agent-almanac
路径: i18n/ja/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

railway-docs

文档

Railway Docs Skill可实时获取最新的Railway官方文档,确保回答的准确性。当开发者询问Railway功能特性、工作原理或分享docs.railway.com链接时,应优先使用此技能。它通过专门的LLM优化文档源提供最新信息,避免依赖过时记忆来回答技术问题。

查看技能

n8n-code-python

文档

该Skill为在n8n平台的Python代码节点中编写代码提供专家指导,特别适用于需要使用_input/_json/_node语法、Python标准库或了解n8n中Python限制的场景。它强调JavaScript应作为首选方案,仅当需要特定Python功能或对Python语法更熟悉时才使用Python。Skill提供了快速入门模板和关键注意事项,帮助开发者在n8n中高效编写Python代码。

查看技能

archon

文档

Archon Skill为开发者提供了基于RAG的语义搜索和项目任务管理功能,可通过REST API访问知识库。它支持文档搜索、网站爬取、文件上传和版本控制,适用于技术文档查询和项目管理场景。首次使用时需要配置Archon主机地址,建议在处理外部文档时优先使用该Skill。

查看技能

n8n-code-javascript

文档

这个Skill为n8n工作流中的JavaScript代码节点提供专业指导,涵盖数据处理、HTTP请求和日期操作等核心场景。它详细解释了如何正确使用n8n特有的`$input`/`$json`语法、`$helpers`工具以及DateTime对象,并包含关键的错误排查和模式选择建议。开发者通过该Skill能快速掌握Code节点的正确返回格式、数据访问方法和常见陷阱解决方案。

查看技能