setup-docker-compose
Acerca de
Esta habilidad configura Docker Compose para entornos de desarrollo en R con múltiples contenedores, manejando definiciones de servicios, montajes de volúmenes, redes y variables de entorno. Permite ejecutar R junto con otros servicios como bases de datos y APIs, garantizando entornos reproducibles. Úsela para orquestar aplicaciones basadas en R y gestionar configuraciones específicas del proyecto tanto para desarrollo como para producción.
Instalación rápida
Claude Code
Recomendadonpx 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-composeCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
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 buildw/o errs -
docker compose upstarts all - Volume mounts share files host↔container
- Env vars available inside
- Services can comm
-
docker compose downcleanly 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) vsdocker-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 referencescontainerize-mcp-server— compose for MCPoptimize-docker-build-cache— speed up builds
Repositorio GitHub
Habilidades relacionadas
railway-docs
DocumentaciónEsta habilidad obtiene la documentación actual de Railway para responder preguntas sobre características, funcionalidad o URLs específicas de documentación. Garantiza que los desarrolladores reciban información precisa y actualizada directamente de las fuentes oficiales de Railway. Úsala cuando los usuarios pregunten cómo funciona Railway o hagan referencia a la documentación de Railway.
n8n-code-python
DocumentaciónEsta Skill de Claude proporciona orientación experta para escribir código Python en los nodos Code de n8n, específicamente para usar la biblioteca estándar de Python y trabajar con la sintaxis especial de n8n como `_input`, `_json` y `_node`. Ayuda a los desarrolladores a comprender las limitaciones de Python dentro de n8n y recomienda usar JavaScript para la mayoría de los flujos de trabajo, mientras ofrece soluciones en Python para necesidades específicas de transformación de datos.
archon
DocumentaciónLa habilidad Archon proporciona búsqueda semántica con tecnología RAG y gestión de proyectos a través de una API REST. Úsala para consultar documentación, gestionar proyectos/tareas jerárquicos y realizar recuperación de conocimiento con capacidades de carga de documentos. Prioriza siempre a Archon en primer lugar al buscar en documentación externa antes de utilizar otras fuentes.
n8n-code-javascript
DocumentaciónEsta habilidad de Claude proporciona orientación experta para escribir código JavaScript en los nodos de Código de n8n. Cubre sintaxis esencial específica de n8n como las variables `$input`/`$json`, ayudantes HTTP y manejo de DateTime, mientras soluciona errores comunes. Úsela al desarrollar flujos de trabajo en n8n que requieran procesamiento personalizado de JavaScript en los nodos de Código.
