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.ymlpara 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.