MCP HubMCP Hub
Retour aux compétences

setup-docker-compose

pjt222
Mis à jour Yesterday
6 vues
17
2
17
Voir sur GitHub
Documentationapimcp

À propos

Cette compétence Claude configure des environnements Docker Compose pour des environnements de développement R multi-conteneurs. Elle gère les définitions de services, les montages de volumes, la mise en réseau et les variables d'environnement pour les configurations de développement et de production. Utilisez-la pour orchestrer des conteneurs de serveur MCP basés sur R ou pour gérer des projets R aux côtés d'autres services comme des bases de données et des API.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-docker-compose

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation


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ビルドの高速化

Dépôt GitHub

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

Compétences associées

railway-docs

Documentation

Cette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.

Voir la compétence

n8n-code-python

Documentation

Cette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.

Voir la compétence

archon

Documentation

La compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.

Voir la compétence

n8n-code-javascript

Documentation

Cette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.

Voir la compétence