スキル一覧に戻る

setup-docker-compose

pjt222
更新日 2 days ago
7 閲覧
17
2
17
GitHubで表示
ドキュメントapimcp

について

このClaudeスキルは、開発者がマルチコンテナR開発環境のためのDocker Compose設定を行うことを支援します。RとデータベースやAPIを組み合わせた再現可能な環境構築のために、サービス、ボリューム、ネットワーク、環境変数を設定します。Rベースのコンテナをオーケストレーションする際や、開発/本番環境の構成を管理する際にご利用ください。

クイックインストール

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 的 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: zh-CN source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

配置 Docker Compose

为 R 开发和部署环境配置 Docker Compose。

适用场景

  • 将 R 与其他服务(数据库、API)一起运行
  • 设置可重现的开发环境
  • 编排基于 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

预期结果: docker-compose.yml 文件存在,定义了 R 服务,包含项目目录和 renv 缓存的卷挂载,以及 R 库路径的环境变量。

失败处理: 如果 YAML 语法无效,使用 docker compose config 验证。确保缩进使用空格(不是制表符),所有包含特殊字符的字符串值都加引号。

第 2 步:添加附加服务(如需要)

services:
  r-dev:
    # ... as above
    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 模式,或使用桥接网络加显式端口映射实现隔离服务。

失败处理: 如果服务无法通信,验证它们在同一网络上。使用桥接网络时,使用服务名作为主机名(如 postgres 而非 localhost)。使用 host 模式时,使用 localhost 并确保端口不冲突。

第 4 步:管理环境变量

创建 .env 文件(加入 git 忽略):

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 忽略)包含项目特定变量,docker-compose.yml 通过 env_file 或变量插值(${VAR})引用它。

失败处理: 如果变量未解析,确保 .env 文件与 docker-compose.yml 在同一目录。运行 docker compose config 查看所有变量展开后的解析配置。

第 5 步:构建和运行

# Build images
docker compose build

# Start services
docker compose up -d

# Attach to R session
docker compose exec r-dev R

# View logs
docker compose logs -f r-dev

# Stop services
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 与 CLIdocker compose(v2)与 docker-compose(v1)。使用 v2。
  • WSL 路径挂载:从 WSL 挂载 Windows 目录时使用 /mnt/c/... 路径
  • 命名卷与绑定挂载:命名卷在重建后保持;绑定挂载立即反映主机更改

相关技能

  • create-r-dockerfile - 创建 compose 引用的 Dockerfile
  • containerize-mcp-server - MCP 服务器的 compose 配置
  • optimize-docker-build-cache - 加速 compose 构建

GitHub リポジトリ

pjt222/agent-almanac
パス: i18n/zh-CN/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

関連スキル

railway-docs

ドキュメント

このスキルは、Railwayの機能や仕様、特定のドキュメントURLに関する質問に答えるために、最新のRailwayドキュメントを取得します。開発者がRailwayの公式情報源から正確かつ最新の情報を直接受け取れるようにします。ユーザーがRailwayの動作方法について尋ねたり、Railwayドキュメントを参照する際にご利用ください。

スキルを見る

n8n-code-python

ドキュメント

このClaudeスキルは、n8nのコードノードでPythonコードを記述するための専門的なガイダンスを提供します。具体的には、Pythonの標準ライブラリの使用方法や、`_input`、`_json`、`_node`といったn8n独自の構文の扱い方を解説します。n8n環境内におけるPythonの制限事項を開発者が理解できるよう支援し、ほとんどのワークフローではJavaScriptの使用を推奨しながらも、特定のデータ変換ニーズに対応するPythonソリューションを提案します。

スキルを見る

archon

ドキュメント

Archonスキルは、RAGを活用したセマンティック検索とプロジェクト管理をREST APIを通じて提供します。ドキュメントの検索、階層的なプロジェクト/タスクの管理、ドキュメントアップロード機能を備えたナレッジ検索の実行にご利用いただけます。外部ドキュメントを検索する際は、他の情報源を利用する前に常にArchonを最優先で使用してください。

スキルを見る

n8n-code-javascript

ドキュメント

このClaudeスキルは、n8nのCodeノードでJavaScriptコードを書くための専門的なガイダンスを提供します。`$input`/`$json`変数、HTTPヘルパー、DateTime処理などの重要なn8n固有の構文を網羅し、一般的なエラーのトラブルシューティングも行います。CodeノードでカスタムJavaScript処理を必要とするn8nワークフローを開発する際にご利用ください。

スキルを見る