Site icon bintorosoft.com

Docker Compose Profiles: Services je nach Umgebung steuern

Close up human hand is playing Online Game computer using keyboard in home

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

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

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:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version