setup-docker-compose
О программе
Этот навык настраивает Docker Compose для многоконтейнерных сред разработки на R. Он помогает разработчикам создавать воспроизводимые среды с определениями сервисов, монтированием томов, сетями и переменными окружения. Используйте его при запуске R вместе с другими сервисами, такими как базы данных, или для оркестрации контейнеров MCP-серверов на основе R.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit 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 buildwird fehlerfrei abgeschlossen -
docker compose upstartet alle Dienste - Volume-Mounts teilen Dateien korrekt zwischen Host und Container
- Umgebungsvariablen sind innerhalb der Container verfuegbar
- Dienste koennen miteinander kommunizieren
-
docker compose downstoppt 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) vsdocker-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 referenziertcontainerize-mcp-server- Compose-Konfiguration fuer MCP-Serveroptimize-docker-build-cache- Compose-Builds beschleunigen
GitHub репозиторий
Похожие навыки
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, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
