MCP HubMCP Hub
Вернуться к навыкам

setup-docker-compose

pjt222
Обновлено 2 days ago
8 просмотров
17
2
17
Посмотреть на GitHub
Документацияgeneral

О программе

Этот навык настраивает конфигурации Docker Compose для сред разработки на R с сервисами баз данных, такими как PostgreSQL и Redis. Он управляет постоянными томами, сетевыми настройками и оркестрацией нескольких контейнеров. Используйте его при запуске R-приложений вместе с внешними сервисами или для управления сложными средами разработки.

Быстрая установка

Claude Code

Рекомендуется
Основной
npx skills add pjt222/agent-almanac -a claude-code
Команда плагинаАльтернативный
/plugin add https://github.com/pjt222/agent-almanac
Git клонированиеАльтернативный
git 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 up inicia 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_on con condition: service_healthy en lugar de solo depends_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 R
  • setup-compose-stack - Stacks Docker Compose generales multi-servicio
  • optimize-docker-build-cache - Optimizar tiempos de compilación Docker

GitHub репозиторий

pjt222/agent-almanac
Путь: i18n/es/skills/setup-docker-compose
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Похожие навыки

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.

Просмотреть навык