setup-docker-compose
정보
이 스킬은 PostgreSQL과 Redis 같은 데이터베이스 서비스를 포함한 R 개발 환경을 위한 Docker Compose 구성을 설정합니다. 영구 볼륨, 네트워킹, 다중 컨테이너 오케스트레이션을 처리합니다. 외부 서비스와 함께 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-composeClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
name: setup-docker-compose locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Configurar Docker Compose para entornos R con servicios de base de datos, volúmenes persistentes y redes. Usar cuando se necesite ejecutar aplicaciones R junto con PostgreSQL, Redis u otros servicios, o cuando se gestionen entornos de desarrollo multi-contenedor. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: basic language: multi tags: docker-compose, r, multi-container, orchestration
Configurar Docker Compose
Configurar Docker Compose para orquestar entornos R multi-contenedor con servicios y redes.
Cuándo Usar
- Ejecutando aplicaciones R con servicios de base de datos (PostgreSQL, MySQL)
- Configurando entornos de desarrollo con múltiples contenedores
- Orquestando aplicaciones Shiny con servicios de soporte
- Creando pipelines de análisis reproducibles con dependencias externas
- Gestionando servicios interconectados para proyectos de ciencia de datos
Entradas
- Requerido: Dockerfile para la aplicación R
- Requerido: Lista de servicios necesarios (base de datos, caché, etc.)
- Opcional: Archivos de configuración para cada servicio
- Opcional: Esquemas de base de datos o scripts de inicialización
- Opcional: Variables de entorno específicas por servicio
Procedimiento
Paso 1: Crear Estructura del Proyecto
Organizar archivos del proyecto para Docker Compose.
mkdir -p mi-proyecto/{app,db/init,config}
cd mi-proyecto
# Estructura:
# mi-proyecto/
# docker-compose.yml
# app/
# Dockerfile
# renv.lock
# app.R
# db/
# init/
# 01-schema.sql
# config/
# .Renviron
Esperado: Estructura de directorios creada con separación clara entre servicios.
En caso de fallo: Verificar permisos de escritura, asegurar que los paths no contienen caracteres especiales.
Paso 2: Escribir docker-compose.yml
Definir servicios, redes y volúmenes.
version: '3.8'
services:
app:
build:
context: ./app
dockerfile: Dockerfile
ports:
- "3838:3838"
environment:
- DB_HOST=db
- DB_PORT=5432
- DB_NAME=mibase
- DB_USER=postgres
- DB_PASSWORD=secreto
depends_on:
db:
condition: service_healthy
volumes:
- ./app:/app
- r-libs:/usr/local/lib/R/site-library
networks:
- app-network
db:
image: postgres:16
environment:
POSTGRES_DB: mibase
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secreto
volumes:
- postgres-data:/var/lib/postgresql/data
- ./db/init:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
- app-network
volumes:
postgres-data:
r-libs:
networks:
app-network:
driver: bridge
Esperado: Los servicios se definen con dependencias claras, healthchecks configurados, volúmenes para persistencia.
En caso de fallo: Validar sintaxis YAML, verificar que las imágenes existen en Docker Hub, comprobar que los puertos no están en uso.
Paso 3: Configurar Variables de Entorno
Usar archivos .env para configuración sensible.
# .env (gitignored)
POSTGRES_PASSWORD=mi_secreto_seguro
DB_NAME=mibase
SHINY_PORT=3838
# docker-compose.yml - referenciar variables
services:
db:
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
Esperado: Variables de entorno separadas del código, archivo .env excluido de Git.
En caso de fallo: Verificar que .env está en .gitignore, comprobar sintaxis de variables con docker compose config.
Paso 4: Iniciar y Verificar Servicios
Compilar y ejecutar todos los servicios.
# Compilar e iniciar
docker compose up -d --build
# Verificar estado
docker compose ps
# Ver logs
docker compose logs -f app
# Verificar conectividad de red
docker compose exec app R -e "DBI::dbConnect(RPostgres::Postgres(), host='db', dbname='mibase')"
# Detener servicios
docker compose down
# Detener y eliminar volúmenes
docker compose down -v
Esperado: Todos los servicios en estado saludable, la aplicación R se conecta a la base de datos, los logs no muestran errores.
En caso de fallo: Revisar logs de servicios individuales (docker compose logs db), verificar healthchecks, comprobar resolución DNS entre contenedores.
Validación
-
docker compose upinicia todos los servicios sin errores - La aplicación R se conecta exitosamente a los servicios dependientes
- Los volúmenes persisten datos entre reinicios
- Los healthchecks reportan servicios saludables
- Las variables de entorno se inyectan correctamente
- La red permite comunicación entre servicios
Errores Comunes
- Orden de inicio incorrecto: Usar
depends_onconcondition: service_healthyen lugar de solodepends_on. - Datos perdidos al detener: Usar volúmenes nombrados, no binds anónimos, para datos persistentes.
- Conexión rechazada entre servicios: Usar nombres de servicio como hostnames, no
localhost. - Puerto ya en uso: Verificar puertos disponibles antes de iniciar, usar puertos alternativos si es necesario.
- Credenciales en repositorio: Nunca commit de archivos .env con secretos reales.
Habilidades Relacionadas
create-r-dockerfile- Crear Dockerfiles base para aplicaciones Rsetup-compose-stack- Stacks Docker Compose generales multi-serviciooptimize-docker-build-cache- Optimizar tiempos de compilación Docker
GitHub 저장소
연관 스킬
railway-docs
문서이 스킬은 Railway의 기능, 작동 방식 또는 특정 문서 URL에 대한 질문에 답하기 위해 최신 Railway 문서를 가져옵니다. 개발자들이 Railway의 공식 소스로부터 정확하고 최신 정보를 직접 받을 수 있도록 보장합니다. 사용자가 Railway의 작동 방식을 묻거나 Railway 문서를 참조할 때 사용하세요.
n8n-code-python
문서이 Claude Skill은 n8n의 Code 노드에서 Python 코드를 작성할 때 전문적인 지침을 제공하며, 특히 Python 표준 라이브러리 사용과 n8n의 특수 구문인 `_input`, `_json`, `_node` 작업에 중점을 둡니다. 이는 개발자가 n8n 내에서 Python의 제한 사항을 이해하도록 돕고, 대부분의 워크플로에는 JavaScript 사용을 권장하면서도 특정 데이터 변환 요구사항에 대한 Python 솔루션을 제안합니다.
archon
문서Archon 스킬은 REST API를 통해 RAG 기반 시맨틱 검색과 프로젝트 관리를 제공합니다. 이 스킬을 사용하여 문서 검색, 계층적 프로젝트/태스크 관리, 문서 업로드 기능을 갖춘 지식 검색을 수행할 수 있습니다. 외부 문서를 검색할 때는 다른 소스를 사용하기 전에 항상 Archon을 최우선으로 활용하세요.
n8n-code-javascript
문서이 Claude Skill은 n8n의 Code 노드에서 JavaScript 코드 작성에 대한 전문적인 지침을 제공합니다. `$input`/`$json` 변수, HTTP 헬퍼, DateTime 처리와 같은 필수적인 n8n 특정 구문을 다루며 일반적인 오류를 해결합니다. Code 노드에서 사용자 정의 JavaScript 처리가 필요한 n8n 워크플로우를 개발할 때 활용하세요.
