Sobes.tech
Junior

¿Cuál es su experiencia con Docker Compose?

sobes.tech AI

Respuesta de la IA

Utilizo Docker Compose para definir y ejecutar aplicaciones multicontenedor. La experiencia incluye:

  • Desarrollo de entorno local: Creación de docker-compose.yml para ejecutar todos los servicios necesarios (backend, frontend, base de datos, caché) para el desarrollo local. Esto permite levantar rápidamente un entorno aislado del sistema principal.
  • Pruebas: Uso de Docker Compose para crear entornos de prueba con diferentes configuraciones de servicios.
  • Despliegue en Staging/Producción: Aunque para producción a menudo se usan orquestadores más potentes (Kubernetes), en etapas tempranas o para proyectos pequeños se utilizó Docker Compose para desplegar en servidores de staging.

Ejemplos de uso de campos en docker-compose.yml:

  • services: Definición de un conjunto de contenedores.
  • image: Especificación de la imagen Docker a usar.
  • build: Construcción de la imagen desde un Dockerfile.
  • ports: Mapeo de puertos.
  • volumes: Montaje de volúmenes para guardar datos o montar código fuente.
  • networks: Definición de redes personalizadas.
  • depends_on: Establecimiento de dependencias entre servicios.
  • environment: Pasar variables de entorno al contenedor.

Ejemplo de configuración sencilla para una aplicación web y base de datos:

services:
  webapp:
    build: ./webapp # Construcción desde Dockerfile en el directorio webapp
    ports:
      - "80:80" # Mapeo del puerto 80 del host al puerto 80 del contenedor
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # Variable de entorno
    depends_on:
      - db # La web depende de la base de datos

  db:
    image: postgres:13 # Uso de la imagen PostgreSQL
    volumes:
      - db_data:/var/lib/postgresql/data # Persistencia de datos
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

volumes:
  db_data: # Definición de volumen nombrado

Comandos típicos:

docker compose up -d # Iniciar servicios en modo background
docker compose down # Detener y eliminar servicios
docker compose build # Construir imágenes
docker compose logs <service_name> # Ver logs de un servicio específico
docker compose exec <service_name> <comando> # Ejecutar comando dentro del contenedor

Estoy familiarizado con las versiones de sintaxis de Compose y sus diferencias. Entiendo cómo usar archivos .env para gestionar variables de entorno y cómo aplicar perfiles para ejecutar diferentes conjuntos de servicios.