Site icon bintorosoft.com

Multi-Environment Setups: dev/stage/prod mit Docker Compose

Close up of computer web page code inside of html file. Big data and Internet of things trend. Application web source code on monitor.

Multi-Environment Setups mit Docker Compose ermöglichen die konsistente Verwaltung von Entwicklungs-, Staging- und Produktionsumgebungen. Jede Umgebung hat unterschiedliche Anforderungen in Bezug auf Ressourcen, Debugging, Logging und Sicherheit. Mit gezieltem Einsatz von Basis-Compose-Dateien und Overrides lassen sich dev/stage/prod sauber trennen und automatisierte Deployments sicher durchführen.

Warum Multi-Environment Setups wichtig sind

Unterschiedliche Umgebungen dienen spezifischen Zwecken:

Die Trennung verhindert, dass Debug-Features oder unsichere Ports in die Produktion gelangen und erleichtert Rollbacks und Updates.

Basis-Compose-Datei

Eine zentrale Basisdatei docker-compose.base.yml definiert gemeinsame Services, Netzwerke und Volumes:

version: "3.9"

services:
  web:
    image: myorg/web:1.0.0
    networks:
      - frontend
  api:
    image: myorg/api:2.0.0
    networks:
      - backend
  db:
    image: postgres:16
    volumes:
      - db_data:/var/lib/postgresql/data

networks:
  frontend:
  backend:

volumes:
  db_data:

Development Override

In Development werden zusätzliche Features aktiviert:

version: "3.9"

services:
  web:
    build: ./web
    ports:
      - "3000:3000"
    volumes:
      - ./web/src:/app/src
    environment:
      - DEBUG=true
  api:
    build: ./api
    ports:
      - "5000:5000"
    environment:
      - DEBUG=true

Staging Override

Staging simuliert die Produktionsumgebung mit stabilen Images, jedoch ohne Live-Traffic:

version: "3.9"

services:
  web:
    image: myorg/web:1.0.0
    environment:
      - DEBUG=false
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
  api:
    image: myorg/api:2.0.0
    environment:
      - DEBUG=false
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

Production Override

In der Produktion sind Sicherheit und Skalierbarkeit entscheidend:

version: "3.9"

services:
  web:
    image: myorg/web:1.0.0
    environment:
      - DEBUG=false
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "1.0"
          memory: "512M"
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    secrets:
      - db_password
  api:
    image: myorg/api:2.0.0
    environment:
      - DEBUG=false
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: "0.5"
          memory: "256M"
      restart_policy:
        condition: on-failure
    secrets:
      - api_key

secrets:
  db_password:
    external: true
  api_key:
    external: true

Deployment mit Multi-Environment Compose

Docker Compose erlaubt die Kombination von Basis- und Override-Dateien:

# Entwicklungsstart
docker-compose -f docker-compose.base.yml -f docker-compose.override.dev.yml up -d

# Staging
docker-compose -f docker-compose.base.yml -f docker-compose.override.stage.yml up -d

# Produktion
docker-compose -f docker-compose.base.yml -f docker-compose.override.prod.yml up -d

Netzwerk- und Portmanagement

Best Practices für Multi-Environment Setups

Monitoring und Logging

Entwicklungs-, Staging- und Produktionsumgebungen unterscheiden sich beim Logging:

Zusammenfassung

Multi-Environment Setups mit Docker Compose ermöglichen die konsistente Verwaltung von Development, Staging und Production. Durch Basis-Compose-Dateien und spezifische Overrides können Debugging, Hot-Reload und Tests in Development erfolgen, während Staging und Production stabil, abgesichert und skalierbar bleiben. Die Trennung reduziert Fehler, erleichtert Rollbacks und sorgt für wartbare, sichere Produktionsumgebungen.

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