MCP HubMCP Hub
Вернуться к навыкам

setup-docker-compose

pjt222
Обновлено 5 days ago
7 просмотров
17
2
17
Посмотреть на GitHub
Документацияaiapimcpdata

О программе

Этот навык настраивает Docker Compose для многоконтейнерных сред разработки на R, управляя определениями сервисов, томами, сетями и переменными окружения. Используйте его при работе R совместно с базами данных или API, настройке воспроизводимых сред или оркестрации MCP-серверов на основе R. Он охватывает конфигурации как для разработки, так и для продакшена контейнеризированных 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 для установки этого навыка

Документация

設置 Docker Compose

為 R 開發與部署環境配置 Docker Compose。

適用時機

  • 與其他服務(資料庫、API)一同執行 R
  • 設置可重現之開發環境
  • 編排 R 為基礎之 MCP 伺服器容器
  • 管理環境變數與卷掛載

輸入

  • 必要:R 服務之 Dockerfile
  • 必要:欲掛載之項目目錄
  • 選擇性:附加服務(資料庫、快取、網頁伺服器)
  • 選擇性:環境變數配置

步驟

步驟一:建立 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 驗證。確保縮排用空格(非 tab)且所有含特殊字元之字串值已加引號。

步驟二:加入附加服務(如需)

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 之環境變數指向有效之 secrets 或開發用切至 POSTGRES_PASSWORD

步驟三:配置網路

對需 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 並確保連接埠不衝突。

步驟四:管理環境變數

建立 .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 以見所有變數已展開之解析配置。

步驟五:建構並執行

# 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 以查啟動錯誤。常見:連接埠衝突、缺環境變數。

步驟六:為開發建立覆蓋

建立 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/wenyan-lite/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Похожие навыки

railway-docs

Документация

Этот навык получает актуальную документацию Railway, чтобы отвечать на вопросы о функциях, возможностях или конкретных URL-адресах документации. Он гарантирует, что разработчики получают точную и современную информацию напрямую из официальных источников Railway. Используйте его, когда пользователи спрашивают, как работает Railway, или ссылаются на документацию Railway.

Просмотреть навык

n8n-code-python

Документация

Этот навык Claude предоставляет экспертные рекомендации по написанию кода Python в узлах Code платформы n8n, в частности, по использованию стандартной библиотеки Python и работе со специальным синтаксисом n8n, таким как `_input`, `_json` и `_node`. Он помогает разработчикам понять ограничения Python в среде n8n и рекомендует использовать JavaScript для большинства рабочих процессов, предлагая решения на Python для конкретных задач по преобразованию данных.

Просмотреть навык

archon

Документация

Навык Archon предоставляет семантический поиск на основе RAG и управление проектами через REST API. Используйте его для запросов к документации, управления иерархическими проектами/задачами и выполнения поиска информации с возможностью загрузки документов. Всегда в первую очередь обращайтесь к Archon при поиске во внешней документации, прежде чем использовать другие источники.

Просмотреть навык

n8n-code-javascript

Документация

Этот навык Claude предоставляет экспертные рекомендации по написанию кода JavaScript в узлах Code платформы n8n. Он охватывает важный синтаксис, специфичный для n8n, включая переменные `$input`/`$json`, HTTP-хелперы и работу с DateTime, а также помогает в устранении распространённых ошибок. Используйте его при разработке рабочих процессов в n8n, требующих кастомной обработки JavaScript в узлах Code.

Просмотреть навык