Profiles — selectively start services based on environment.
1# docker-compose.yml2services:3 app:4 build: .5 ports: ["3000:3000"]67 postgres:8 image: postgres:159 profiles: ["dev", "staging"]1011 redis:12 image: redis:713 profiles: ["dev", "staging"]1415 adminer:16 image: adminer17 ports: ["8080:8080"]18 profiles: ["dev"]1920 mailhog:21 image: mailhog/mailhog22 ports: ["1025:1025", "8025:8025"]23 profiles: ["dev"]2425 prometheus:26 image: prom/prometheus27 profiles: ["monitoring"]2829 grafana:30 image: grafana/grafana31 profiles: ["monitoring"]
1# Start only default services2docker compose up34# Start with dev profile5docker compose --profile dev up67# Start with multiple profiles8docker compose --profile dev --profile monitoring up910# Set profiles via environment11COMPOSE_PROFILES=dev docker compose up1213# List running services by profile14docker compose ps --profile dev1516# Stop profile services17docker compose --profile dev down
Use cases: