0Pricing
Go Academy · Lektion

Docker Compose für die lokale Entwicklung

Einen Go-Service mit PostgreSQL und Redis verbinden

Docker Compose für die lokale Entwicklung ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Docker Compose?

Docker Compose orchestriert mehrere Container (Anwendung, Datenbank, Cache, Message Broker) für die lokale Entwicklung und bildet eine produktionsnahe Umgebung nach, ohne Dienste manuell einrichten zu müssen.

Struktur von docker-compose.yml

Definieren Sie Dienste, Netzwerke und Volumes in einer YAML-Datei:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Live-Reloading mit Air

Verwenden Sie github.com/air-verse/air für Live-Reloading während der Entwicklung. Binden Sie den Quellcode in den Container ein und führen Sie statt der Binärdatei air aus:

app:
  volumes:
    - .:/app
  command: air

Health-Checks

Definieren Sie Health-Checks, damit depends_on wartet, bis die Datenbank wirklich bereit ist und nicht nur gestartet wurde:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Umgebungsabhängige Überschreibungen

Verwenden Sie docker-compose.override.yml (wird automatisch zusammengeführt) für lokale Einstellungen und halten Sie die Basisdatei dadurch sauber für CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Benannte Netzwerke

Platzieren Sie Dienste in einem gemeinsamen benutzerdefinierten Netzwerk, damit die DNS-basierte Diensterkennung über den Servicenamen funktioniert:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Umgebungsdateien

Verwenden Sie den Schlüssel env_file, um .env-Dateien in den Container zu laden und Secrets aus der YAML-Datei herauszuhalten:

app:
  env_file: .env.local

Befehle ausführen

Häufig verwendete Compose-Befehle:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Datenbank initialisieren

Binden Sie SQL-Seed-Dateien in das Verzeichnis /docker-entrypoint-initdb.d des postgres-Images ein — sie werden bei der ersten Erstellung des Containers ausgeführt:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Profile

Verwenden Sie Compose-Profile, um optionale Dienste (z. B. einen Monitoring-Stack) nur bei Bedarf zu starten:

services:
  grafana:
    profiles: ["monitoring"]

Compose in CI

Führen Sie Integrationstests in CI mit Compose gegen echte Dienste aus. GitHub Actions unterstützt Docker Compose nativ; verwenden Sie Health-Checks, um zu warten, bis die Dienste bereit sind.

Schnelltest

Wie stellen Sie in Docker Compose sicher, dass der Anwendungscontainer wartet, bis die Datenbank bereit ist?

Zusammenfassung: Docker Compose

Wichtige Punkte:

  • docker-compose.yml definiert alle Dienste, Netzwerke und Volumes
  • depends_on + healthcheck für die Bereitschaft von Diensten
  • Überschreibungsdateien für Einstellungen der lokalen Entwicklung; env_file für Secrets
  • Air für Live-Reloading; binden Sie den Quellcode als Volume ein

Häufig gestellte Fragen

Ist die Lektion „Docker Compose für die lokale Entwicklung“ kostenlos?

Ja — der vollständige Text von „Docker Compose für die lokale Entwicklung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Docker Compose für die lokale Entwicklung“?

Einen Go-Service mit PostgreSQL und Redis verbinden Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Docker Compose für die lokale Entwicklung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Mehrstufige Docker-Builds für Go
  2. Umgebungskonfiguration und Secrets
  3. Docker Compose für die lokale Entwicklung
  4. Health Checks und Tuning für Produktion
← Zurück zu Go Academy