In modernen Entwicklungs- und Produktionsumgebungen ist es häufig erforderlich, Container-Dienste abhängig von der Umgebung zu starten. Docker Compose bietet mit Profiles eine einfache Möglichkeit, Services gezielt zu aktivieren oder zu deaktivieren. Dadurch lassen sich unterschiedliche Konfigurationen für Entwicklung, Test und Produktion realisieren, ohne mehrere Compose-Dateien pflegen zu müssen.
Grundlagen von Docker Compose Profiles
Profiles sind eine Funktion in Docker Compose, mit der Services bestimmten Gruppen zugeordnet werden. Nur die Services, die einem aktivierten Profil zugeordnet sind, werden beim Starten berücksichtigt. Nicht definierte Services werden standardmäßig gestartet, wenn kein Profil angegeben wird.
Syntax in der Compose-Datei
version: '3.9'
services:
web:
image: nginx
profiles:
- dev
api:
image: my_api
profiles:
- dev
db:
image: postgres
profiles:
- prod
In diesem Beispiel werden die Services web und api nur gestartet, wenn das Profil dev aktiviert ist. Der db-Service läuft nur bei aktiviertem prod-Profil.
Profile aktivieren
Beim Start von Docker Compose kann ein Profil explizit aktiviert werden:
docker-compose --profile dev up -d
Damit werden nur die Services gestartet, die im Profil dev definiert sind. Analog kann ein Produktionsprofil aktiviert werden:
docker-compose --profile prod up -d
Vorteile der Profile
- Einfaches Steuern von Services je nach Umgebung
- Keine separate Compose-Datei pro Umgebung notwendig
- Reduziert Konfigurationsaufwand und Fehlerquellen
- Ermöglicht selektives Testen einzelner Services
- Flexibel kombinierbar mit Volumes, Netzwerken und Umgebungsvariablen
Praktische Beispiele
Entwicklungsumgebung
version: '3.9'
services:
web:
image: nginx
ports:
- "8080:80"
profiles:
- dev
api:
image: my_api
environment:
ENV: development
profiles:
- dev
db:
image: postgres
environment:
POSTGRES_PASSWORD: devpass
profiles:
- dev
Mit dem Befehl docker-compose --profile dev up -d werden Web, API und Datenbank für die Entwicklungsumgebung gestartet.
Produktionsumgebung
version: '3.9'
services:
web:
image: nginx:stable
ports:
- "80:80"
profiles:
- prod
api:
image: my_api:latest
environment:
ENV: production
profiles:
- prod
db:
image: postgres
environment:
POSTGRES_PASSWORD: securepass
profiles:
- prod
In der Produktionsumgebung werden nur Services gestartet, die dem prod-Profil zugeordnet sind. Dies reduziert die Anzahl laufender Container und verbessert die Performance.
Mehrere Profile gleichzeitig
Docker Compose erlaubt es, mehrere Profile gleichzeitig zu aktivieren:
docker-compose --profile dev --profile monitoring up -d
Alle Services, die einem der aktivierten Profile zugeordnet sind, werden gestartet.
Best Practices
- Klare Profilnamen wie
dev,test,prodverwenden - Services, die in allen Umgebungen benötigt werden, ohne Profil definieren
- Umgebungsvariablen gezielt pro Profil einsetzen, z. B.
ENV: developmentoderENV: production - Volumes und Netzwerke je nach Profil konfigurieren, um Ressourcen sauber zu trennen
- Profile in CI/CD-Pipelines nutzen, um unterschiedliche Umgebungen automatisch zu deployen
Praxisbeispiele für Multi-Container-Projekte
Web-App mit Monitoring
version: '3.9'
services:
web:
image: nginx
ports:
- "8080:80"
profiles:
- dev
- prod
api:
image: my_api
profiles:
- dev
- prod
db:
image: postgres
profiles:
- prod
prometheus:
image: prom/prometheus
profiles:
- monitoring
grafana:
image: grafana/grafana
profiles:
- monitoring
In diesem Setup können Entwickler das dev-Profil starten, während im Produktionssystem nur prod und optional monitoring aktiviert werden.
Zusammenfassung
Docker Compose Profiles ermöglichen die gezielte Steuerung von Services abhängig von der Umgebung. Sie vereinfachen das Management von Entwicklungs-, Test- und Produktionsumgebungen, reduzieren Fehlerquellen und erleichtern CI/CD-Workflows. Durch die Kombination von Profilen, Volumes, Netzwerken und Umgebungsvariablen lassen sich flexible, sichere und wartbare Container-Architekturen aufbauen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











