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

setup-docker-compose

pjt222
Обновлено 2 days ago
8 просмотров
17
2
17
Посмотреть на GitHub
Метаaiapimcp

О программе

Этот навык настраивает Docker Compose для многоконтейнерных сред разработки на R. Он помогает разработчикам создавать воспроизводимые среды с определениями сервисов, монтированием томов, сетями и переменными окружения. Используйте его при запуске R вместе с другими сервисами, такими как базы данных, или для оркестрации контейнеров MCP-серверов на основе 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: > Konfiguriere Docker Compose fuer Multi-Container-R-Entwicklungsumgebungen. Umfasst Dienstdefinitionen, Volume-Mounts, Netzwerke, Umgebungsvariablen und Konfigurationen fuer Entwicklung vs. Produktion. Verwende diesen Skill beim Betrieb von R neben anderen Diensten (Datenbanken, APIs), beim Einrichten einer reproduzierbaren R-Entwicklungsumgebung, beim Orchestrieren eines R-basierten MCP-Server-Containers oder beim Verwalten von Umgebungsvariablen und Volume-Mounts fuer R-Projekte. 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: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

Docker Compose einrichten

Docker Compose fuer R-Entwicklungs- und Deployment-Umgebungen konfigurieren.

Wann verwenden

  • Betrieb von R neben anderen Diensten (Datenbanken, APIs)
  • Einrichten einer reproduzierbaren Entwicklungsumgebung
  • Orchestrieren eines R-basierten MCP-Server-Containers
  • Verwalten von Umgebungsvariablen und Volume-Mounts

Eingaben

  • Erforderlich: Dockerfile fuer den R-Dienst
  • Erforderlich: Projektverzeichnis zum Einhaengen
  • Optional: Zusaetzliche Dienste (Datenbank, Cache, Webserver)
  • Optional: Konfiguration von Umgebungsvariablen

Vorgehensweise

Schritt 1: docker-compose.yml erstellen

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

Erwartet: Eine docker-compose.yml-Datei existiert mit definiertem R-Dienst, einschliesslich Volume-Mounts fuer das Projektverzeichnis und den renv-Cache sowie Umgebungsvariablen fuer R-Bibliothekspfade.

Bei Fehler: Bei ungueltigem YAML mit docker compose config validieren. Sicherstellen, dass die Einrueckung Leerzeichen (keine Tabs) verwendet und alle Zeichenkettenwerte mit Sonderzeichen in Anfuehrungszeichen stehen.

Schritt 2: Zusaetzliche Dienste hinzufuegen (bei Bedarf)

services:
  r-dev:
    # ... wie oben
    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:

Erwartet: Der zusaetzliche Dienst (z.B. PostgreSQL) ist mit eigenem Volume, Umgebungsvariablen und Port-Mapping definiert. Der R-Dienst hat depends_on mit Verweis auf den neuen Dienst.

Bei Fehler: Wenn der Datenbankdienst nicht startet, docker compose logs postgres auf Initialisierungsfehler pruefen. Sicherstellen, dass Umgebungsvariablen wie POSTGRES_PASSWORD_FILE auf gueltige Secrets verweisen oder fuer die Entwicklung auf POSTGRES_PASSWORD umstellen.

Schritt 3: Netzwerk konfigurieren

Fuer Dienste, die Localhost-Zugriff benoetigen (z.B. MCP-Server):

services:
  r-dev:
    network_mode: "host"

Fuer isoliertes Netzwerk:

services:
  r-dev:
    networks:
      - app-network
    ports:
      - "3000:3000"

networks:
  app-network:
    driver: bridge

Erwartet: Netzwerk ist entsprechend konfiguriert: host-Modus fuer Dienste, die Localhost-Zugriff benoetigen (MCP-Server), oder Bridge-Netzwerk mit expliziten Port-Mappings fuer isolierte Dienste.

Bei Fehler: Wenn Dienste nicht kommunizieren koennen, sicherstellen, dass sie sich im selben Netzwerk befinden. Bei Bridge-Netzwerk Dienstnamen als Hostnamen verwenden (z.B. postgres statt localhost). Bei Host-Modus localhost verwenden und sicherstellen, dass Ports nicht kollidieren.

Schritt 4: Umgebungsvariablen verwalten

.env-Datei erstellen (git-ignoriert):

R_VERSION=4.5.0
GITHUB_PAT=your_token_here

In Compose referenzieren:

services:
  r-dev:
    build:
      args:
        R_VERSION: ${R_VERSION}
    env_file:
      - .env

Erwartet: Eine .env-Datei existiert (git-ignoriert) mit projektspezifischen Variablen, und docker-compose.yml referenziert sie ueber env_file oder Variableninterpolation (${VAR}).

Bei Fehler: Wenn Variablen nicht aufgeloest werden, sicherstellen, dass die .env-Datei im selben Verzeichnis wie docker-compose.yml liegt. docker compose config ausfuehren, um die aufgeloeste Konfiguration mit allen erweiterten Variablen zu sehen.

Schritt 5: Bauen und Starten

# Images bauen
docker compose build

# Dienste starten
docker compose up -d

# An R-Sitzung anhaengen
docker compose exec r-dev R

# Logs anzeigen
docker compose logs -f r-dev

# Dienste stoppen
docker compose down

Erwartet: Alle Dienste starten. R-Sitzung ist erreichbar.

Bei Fehler: docker compose logs auf Startfehler pruefen. Haeufig: Port-Konflikte, fehlende Umgebungsvariablen.

Schritt 6: Override fuer Entwicklung erstellen

docker-compose.override.yml fuer lokale Entwicklungseinstellungen erstellen:

services:
  r-dev:
    volumes:
      - /path/to/local/packages:/extra-packages
    environment:
      - DEBUG=true

Dies wird automatisch mit docker-compose.yml zusammengefuehrt.

Erwartet: Eine docker-compose.override.yml-Datei existiert mit entwicklungsspezifischen Einstellungen (zusaetzliche Volumes, Debug-Flags), die automatisch beim Ausfuehren von docker compose up angewendet werden.

Bei Fehler: Wenn Overrides nicht wirksam werden, sicherstellen, dass der Dateiname exakt docker-compose.override.yml lautet. docker compose config ausfuehren, um die Zusammenfuehrung zu bestaetigen. Fuer explizite Override-Dateien docker compose -f docker-compose.yml -f custom-override.yml up verwenden.

Validierung

  • docker compose build wird fehlerfrei abgeschlossen
  • docker compose up startet alle Dienste
  • Volume-Mounts teilen Dateien korrekt zwischen Host und Container
  • Umgebungsvariablen sind innerhalb der Container verfuegbar
  • Dienste koennen miteinander kommunizieren
  • docker compose down stoppt alles sauber

Haeufige Fehler

  • Volume-Mount-Berechtigungen: Linux-Container koennen Dateien als Root erstellen. user:-Direktive verwenden oder Berechtigungen korrigieren.
  • Port-Konflikte: Pruefen, ob Dienste bereits dieselben Ports auf dem Host verwenden.
  • Docker Desktop vs CLI: docker compose (v2) vs docker-compose (v1). V2 verwenden.
  • WSL-Pfad-Mounts: /mnt/c/...-Pfade verwenden, wenn Windows-Verzeichnisse aus WSL eingehaengt werden.
  • Benannte Volumes vs Bind-Mounts: Benannte Volumes bleiben ueber Rebuilds erhalten; Bind-Mounts spiegeln Host-Aenderungen sofort wider.

Verwandte Skills

  • create-r-dockerfile - Das Dockerfile erstellen, das Compose referenziert
  • containerize-mcp-server - Compose-Konfiguration fuer MCP-Server
  • optimize-docker-build-cache - Compose-Builds beschleunigen

GitHub репозиторий

pjt222/agent-almanac
Путь: i18n/de/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

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

content-collections

Мета

Этот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.

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

polymarket

Мета

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

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

creating-opencode-plugins

Мета

Этот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.

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

sglang

Мета

SGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.

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