Zurück zu Fähigkeiten

setup-docker-compose

pjt222
Aktualisiert 2 days ago
6 Ansichten
17
2
17
Auf GitHub ansehen
Dokumentationaiapimcp

Über

Diese Fähigkeit konfiguriert Docker Compose für Multi-Container-R-Entwicklungsumgebungen, verwaltet Service-Definitionen, Volume-Mounts, Netzwerke und Umgebungsvariablen. Sie ermöglicht das Ausführen von R neben anderen Diensten wie Datenbanken und APIs und gewährleistet dabei reproduzierbare Umgebungen. Nutzen Sie sie, um R-basierte Anwendungen zu orchestrieren und projektspezifische Konfigurationen für Entwicklung und Produktion zu verwalten.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add pjt222/agent-almanac -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativ
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-docker-compose

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation

Set Up Docker Compose

Configure Docker Compose for R dev + deploy envs.

Use When

  • R + other services (DBs, APIs)
  • Reproducible dev env
  • Orchestrate R-based MCP server
  • Manage env vars + volume mounts

In

  • Required: Dockerfile for R service
  • Required: Project dir to mount
  • Optional: Additional services (DB, cache, web)
  • Optional: Env var config

Do

Step 1: Create 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 exists w/ R service, volume mounts (project + renv cache), env vars for R lib paths.

If err: invalid YAML → docker compose config validate. Spaces (not tabs); special chars quoted.

Step 2: Add Services (If Needed)

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:

→ Service (PostgreSQL) defined w/ own volume, env vars, ports. R service depends_on references new.

If err: DB fails start → docker compose logs postgres for init errs. Verify env vars (POSTGRES_PASSWORD_FILE → valid secret) or switch POSTGRES_PASSWORD for dev.

Step 3: Networking

For services needing localhost (MCP):

services:
  r-dev:
    network_mode: "host"

Isolated:

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

networks:
  app-network:
    driver: bridge

→ Networking configured: host for localhost-needing (MCP), bridge w/ explicit ports for isolated.

If err: services can't comm → verify same net. Bridge → use service names as hostnames (postgres not localhost). Host → localhost + no port conflicts.

Step 4: Env Vars

.env (git-ignored):

R_VERSION=4.5.0
GITHUB_PAT=your_token_here

Reference:

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

.env exists git-ignored w/ project vars; compose references via env_file|${VAR}.

If err: vars not resolving → .env in same dir as docker-compose.yml. docker compose config shows resolved.

Step 5: Build + Run

# 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

→ All start. R session accessible.

If err: docker compose logs → startup errs. Common: port conflicts, missing env vars.

Step 6: Override for Dev

docker-compose.override.yml:

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

Auto-merged.

→ Override exists w/ dev settings (extra volumes, debug) auto-applied via docker compose up.

If err: not taking effect → verify exact docker-compose.override.yml. docker compose config confirms merge. Explicit: docker compose -f docker-compose.yml -f custom-override.yml up.

Check

  • docker compose build w/o errs
  • docker compose up starts all
  • Volume mounts share files host↔container
  • Env vars available inside
  • Services can comm
  • docker compose down cleanly stops

Traps

  • Volume mount perms: Linux containers create files as root. user: directive or fix perms.
  • Port conflicts: Check services using same ports on host.
  • Docker Desktop vs CLI: docker compose (v2) vs docker-compose (v1). Use v2.
  • WSL path mounts: /mnt/c/... for Windows dirs from WSL.
  • Named vs bind: Named persist across rebuilds; bind reflects host immediately.

  • create-r-dockerfile — Dockerfile compose references
  • containerize-mcp-server — compose for MCP
  • optimize-docker-build-cache — speed up builds

GitHub Repository

pjt222/agent-almanac
Pfad: i18n/caveman-ultra/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Verwandte Skills

railway-docs

Dokumentation

Diese Fähigkeit ruft aktuelle Railway-Dokumentation ab, um Fragen zu Funktionen, Funktionalität oder spezifischen Dokumentations-URLs zu beantworten. Sie stellt sicher, dass Entwickler genaue, aktuelle Informationen direkt aus den offiziellen Quellen von Railway erhalten. Nutzen Sie sie, wenn Nutzer fragen, wie Railway funktioniert oder auf Railway-Dokumentation verweisen.

Skill ansehen

n8n-code-python

Dokumentation

Dieses Claude Skill bietet fachkundige Anleitung zum Schreiben von Python-Code in n8n-Code-Nodes, insbesondere für die Verwendung der Python-Standardbibliothek und den Umgang mit n8ns spezieller Syntax wie `_input`, `_json` und `_node`. Es hilft Entwicklern, die Grenzen von Python innerhalb von n8n zu verstehen, empfiehlt JavaScript für die meisten Workflows und bietet gleichzeitig Python-Lösungen für spezifische Datenumwandlungsanforderungen.

Skill ansehen

archon

Dokumentation

Die Archon-Funktion bietet semantische Suche auf RAG-Basis und Projektmanagement über eine REST-API. Nutzen Sie sie für das Abfragen von Dokumentation, die Verwaltung hierarchischer Projekte/Aufgaben und die Durchführung von Wissenabruf mit Dokumenten-Upload-Fähigkeiten. Priorisieren Sie stets Archon zuerst bei der Suche in externer Dokumentation, bevor Sie andere Quellen verwenden.

Skill ansehen

n8n-code-javascript

Dokumentation

Diese Claude-Skill bietet fachkundige Anleitung für das Schreiben von JavaScript-Code in n8n-Code-Nodes. Sie behandelt wesentliche n8n-spezifische Syntax wie `$input`/`$json`-Variablen, HTTP-Helfer und DateTime-Verarbeitung und hilft bei der Fehlerbehebung häufiger Probleme. Nutzen Sie sie bei der Entwicklung von n8n-Workflows, die eine benutzerdefinierte JavaScript-Verarbeitung in Code-Nodes erfordern.

Skill ansehen