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: airHealth-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_healthyUmgebungsabhä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 reloadBenannte 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.localBefehle 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 containerDatenbank 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.dProfile
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
- Mehrstufige Docker-Builds für Go
- Umgebungskonfiguration und Secrets
- Docker Compose für die lokale Entwicklung
- Health Checks und Tuning für Produktion