Perfiles y overrides
Compose permite activar servicios opcionales con profiles y sobrescribir config local con archivos de override sin tocar el YAML base del equipo.
Profiles
yaml
services:
api:
image: myapi:dev
ports: ["3000:3000"]
adminer:
image: adminer:4
profiles: ["tools"]
ports: ["8080:8080"]
depends_on: [db]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secretbash
docker compose up -d # sin adminer
docker compose --profile tools up -d # con adminerUtil para debug UIs, seeders, profilers o dependencias pesadas.
Overrides
docker-compose.override.yml se fusiona automaticamente con docker-compose.yml en desarrollo:
yaml
# docker-compose.override.yml (local, no siempre en git)
services:
api:
volumes:
- ./:/app
command: npm run dev
environment:
LOG_LEVEL: debugEn CI/prod, evita overrides accidentales:
bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -dMultiples ficheros
bash
docker compose -f compose.yml -f compose.staging.yml configconfig renderiza el YAML final: valida merges antes de aplicar.
Errores habituales
- Meter secretos en el YAML base versionado.
- Confiar en override local que nadie mas tiene (documenta perfiles).
- Nombrar mal el override (
compose.override.ymlno se auto-carga; el nombre clasico esdocker-compose.override.ymljunto adocker-compose.yml).
Buenas practicas
- Base minima reproducible; perfiles para extras.
compose configen CI.- Overrides locales en
.gitignoresi contienen paths personales; ofrece.override.example.
Ejercicio
- Anade un servicio
mailhogcon profiletools. - Crea un override que monte el codigo fuente en caliente.
- Ejecuta
docker compose configy revisa el merge.
Siguiente paso
Continua con Stacks de desarrollo.
