Production-Tipps für Docker & Compose
Für den Einsatz von Containern im Produktivbetrieb sind einige zusätzliche Einstellungen und Best Practices wichtig. Sie verbessern die Sicherheit, Wartbarkeit und Stabilität deiner Umgebung.
Wichtige Production-Tipps
Abschnitt betitelt „Wichtige Production-Tipps“1. Umgebungsvariablen & .env-Files
Abschnitt betitelt „1. Umgebungsvariablen & .env-Files“- Mit Umgebungsvariablen lassen sich Passwörter, Zugänge und Konfigurationen flexibel und sicher steuern – ohne sie in den Code einzubauen.
- In einer
docker-compose.ymlkönnen Variablen direkt gesetzt oder mit einer.env-Datei verknüpft werden. - Beispiel
.env-Datei:
MONGO_USER=adminMONGO_PASSWORD=sicherespasswort- In docker-compose.yml nutzbar über:
environment: - MONGO_INITDB_ROOT_USERNAME=${MONGO_USER} - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD}2. Multi-Stage Builds für kleine Images
Abschnitt betitelt „2. Multi-Stage Builds für kleine Images“- Multi-Stage-Builds stellen sicher, dass das finale Image keine Entwicklungs- oder Build-Tools enthält (z. B. bei React-Apps, siehe vorige Kapitel).
- Das Ergebnis sind kleinere, sichere und schnell ladende Images.
3. Keine sensiblen Daten ins Image oder Git
Abschnitt betitelt „3. Keine sensiblen Daten ins Image oder Git“- Passwörter, Secrets und Schlüssel niemals fest im Image oder im Quelltext ablegen.
- Immer über Umgebungsvariablen oder externe Secret-Manager arbeiten.
4. Healthchecks
Abschnitt betitelt „4. Healthchecks“- Mit Healthchecks kannst du prüfen, ob dein Container wirklich läuft und „gesund“ ist.
- Beispiel in docker-compose.yml für ein Express-Backend:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s retries: 35. Logging
Abschnitt betitelt „5. Logging“- Log-Ausgaben von Anwendungen immer auf die Konsole (
stdout) schreiben, damit sie von Docker gemanagt und in Logsysteme integriert werden können.
Typische Fehler vermeiden
Abschnitt betitelt „Typische Fehler vermeiden“- Vergiss nicht, unnötige Dateien mit
.dockerignorevom Kopieren ins Image auszuschliessen (wienode_modules,.env, Build-Ordner). - Ports nicht doppelt belegen (jeder Container-Service braucht ein eigenes Mapping).
Aufgabe
Abschnitt betitelt „Aufgabe“Im nächsten Kapitel geht es um die Vorbereitung und Durchführung eines Cloud-Deployments auf Render.com.
Danke für Ihr Feedback!