Master advanced Compose techniques: override files, extends, profiles, secrets, and production-ready patterns for complex multi-container applications.
Combine base configuration with environment-specific overrides.
mkdir compose-advanced && cd compose-advancedcat > docker-compose.yml << 'EOF'
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:alpine
environment:
POSTGRES_PASSWORD: changeme
EOFcat > docker-compose.override.yml << 'EOF'
version: '3.8'
services:
web:
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
ports:
- "5432:5432"
EOFdocker compose configCompose automatically merges docker-compose.yml with docker-compose.override.yml. Use base file for shared config, override for local development.
'docker compose config' shows the merged configuration. Web port changes to 8080, volume is added, db port is exposed.