setup-docker-compose
О программе
Этот навык настраивает конфигурации Docker Compose для сред разработки на R с сервисами баз данных, такими как PostgreSQL и Redis. Он управляет постоянными томами, сетевыми настройками и оркестрацией нескольких контейнеров. Используйте его при запуске 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 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.
n8n-code-python
ДокументацияЭтот навык Claude предоставляет экспертные рекомендации по написанию кода Python в узлах Code платформы n8n, в частности, по использованию стандартной библиотеки Python и работе со специальным синтаксисом n8n, таким как `_input`, `_json` и `_node`. Он помогает разработчикам понять ограничения Python в среде n8n и рекомендует использовать JavaScript для большинства рабочих процессов, предлагая решения на Python для конкретных задач по преобразованию данных.
archon
ДокументацияНавык Archon предоставляет семантический поиск на основе RAG и управление проектами через REST API. Используйте его для запросов к документации, управления иерархическими проектами/задачами и выполнения поиска информации с возможностью загрузки документов. Всегда в первую очередь обращайтесь к Archon при поиске во внешней документации, прежде чем использовать другие источники.
n8n-code-javascript
ДокументацияЭтот навык Claude предоставляет экспертные рекомендации по написанию кода JavaScript в узлах Code платформы n8n. Он охватывает важный синтаксис, специфичный для n8n, включая переменные `$input`/`$json`, HTTP-хелперы и работу с DateTime, а также помогает в устранении распространённых ошибок. Используйте его при разработке рабочих процессов в n8n, требующих кастомной обработки JavaScript в узлах Code.
