Funciones y Configuraciones Avanzadas de Compose
Aunque la estructura básica de los archivos Compose y los comandos son potentes, Docker Compose también ofrece una serie de funciones y opciones de configuración avanzadas para ayudarte a construir aplicaciones más complejas y robustas.
Variables de Entorno y Secretos
Puedes usar variables de entorno para pasar configuraciones a tus servicios. Docker Compose admite variables de entorno de tiempo de compilación y tiempo de ejecución, que se pueden definir a nivel de servicio o global.
Además, puedes usar Docker Secrets para almacenar de forma segura información confidencial, como contraseñas de bases de datos o claves API, y ponerlas a disposición de tus servicios.
version: "3"
services:
web:
image: myapp/web
environment:
- DATABASE_URL=mysql://root:${DB_PASSWORD}@db/myapp
secrets:
- db-password
secrets:
db-password:
file: ./db-password.txt
Gestión de Dependencias y Comprobaciones de Estado
Docker Compose te permite definir dependencias de servicios, asegurando que los servicios se inicien en el orden correcto y que los servicios dependientes estén operativos antes de iniciar otros servicios.
También puedes configurar comprobaciones de estado para tus servicios, lo que permite a Compose monitorizar el estado de tus contenedores y tomar acciones apropiadas, como reiniciar contenedores no operativos.
version: "3"
services:
web:
image: myapp/web
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
db:
image: mysql:5.7
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
Redes y Descubrimiento de Servicios
Docker Compose crea automáticamente una red predeterminada para tu aplicación, pero también puedes definir redes personalizadas y controlar la configuración de red de tus servicios.
Además, Compose proporciona un descubrimiento de servicios integrado, lo que permite a tus servicios encontrar y comunicarse entre sí utilizando los nombres de servicio definidos en el archivo Compose.
version: "3"
services:
web:
image: myapp/web
networks:
- frontend
environment:
- DB_HOST=db
db:
image: mysql:5.7
networks:
- backend
networks:
frontend:
backend:
Al aprovechar estas funciones avanzadas, puedes construir aplicaciones Docker Compose más complejas, resilientes y escalables que satisfagan las necesidades de tu organización.