Site icon bintorosoft.com

Compose für Multi-Environment: dev/stage/prod ohne Config-Drift

Python Logo: Digital Art on a Code Background

In modernen DevOps-Umgebungen ist die Verwaltung mehrerer Docker-Umgebungen wie dev, stage und prod entscheidend, um Config-Drift zu vermeiden und konsistente Deployments sicherzustellen. Docker Compose bietet Mechanismen, um Multi-Environment-Setups sauber zu strukturieren, sodass Basis-Services, Umgebungsvariablen und Secrets klar getrennt werden können.

1. Grundlagen von Multi-Environment Setups

Ein Multi-Environment Setup trennt die Konfigurationen in:

Vorteile einer sauberen Trennung

2. Base Compose Datei erstellen

Die Base-Datei definiert die Kernservices, Volumes und Netzwerke. Sie sollte keine environment-spezifischen Anpassungen enthalten.

version: "3.9"

services:
  web:
    image: myapp:latest
    ports:
      - "80:80"
    volumes:
      - app-data:/var/lib/myapp
    environment:
      - APP_ENV=production

  db:
    image: postgres:15
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=admin

volumes:
  app-data:
  db-data:

3. Override Dateien für jede Umgebung

Override-Dateien erlauben es, Einstellungen gezielt zu ändern, ohne die Base-Datei zu verändern.

Development Override Beispiel

version: "3.9"

services:
web:
ports:
- "8080:80"
environment:
- APP_ENV=development
command: ["npm", "run", "dev"]

db:
environment:
- POSTGRES_PASSWORD=devpassword

Staging Override Beispiel

version: "3.9"

services:
web:
environment:
- APP_ENV=staging

db:
environment:
- POSTGRES_PASSWORD=stagepassword

Override-Dateien können beim Start explizit angegeben werden:

docker-compose -f docker-compose.yml -f docker-compose.override.dev.yml up -d

4. Environment Dateien nutzen

Environment-Dateien halten sensitive Daten getrennt von der Compose-Konfiguration.

Beispiel env-Datei .env.dev

POSTGRES_PASSWORD=devsecret
API_KEY=devapikey

In der Compose-Datei referenziert:

environment:
  - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  - API_KEY=${API_KEY}

Docker Compose lädt die Datei automatisch, wenn sie .env heißt, oder kann explizit angegeben werden:

docker-compose --env-file .env.dev up -d

5. Secrets für sensible Daten

Secrets bieten eine zusätzliche Sicherheitsebene, da Passwörter und Tokens nicht als Environment-Variable im Container sichtbar sind.

version: "3.9"

services:
  db:
    image: postgres:15
    secrets:
      - db_password
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

secrets:
  db_password:
    file: ./secrets/db_password.txt

6. Konsistente Deployments sicherstellen

7. Profile für selektive Services

Mit Compose-Profilen lassen sich Services nur in bestimmten Umgebungen starten.

services:
  debug:
    image: myapp-debug
    profiles:
      - dev

Starten mit aktiviertem Profil:

docker-compose --profile dev up -d

8. Best Practices

9. Troubleshooting

Typische Probleme:

Debugging Tipps

10. Zusammenfassung

Multi-Environment Setups mit Base, Override, Environment-Dateien und Secrets verhindern Config-Drift, verbessern Sicherheit und erhöhen die Wartbarkeit von Compose Stacks. Durch gezielte Profil- und Override-Nutzung lassen sich Services flexibel anpassen und Deployments zuverlässig automatisieren.

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