sq.

Compose-Einstellungen verstehen

Was die Übungskonfiguration bewirkt und welche Einstellungen besondere Sorgfalt brauchen.

Veröffentlicht:

Öffne compose.yaml aus dem Übungslabor. Einrückungen bestimmen die YAML-Struktur. Verwende Leerzeichen und prüfe Änderungen mit sudo docker compose config --quiet.

Images, Dienste und Prozesse

web ist ein Dienstname, den andere Container im gemeinsamen Netzwerk auflösen können. image bezeichnet das Anwendungspaket; seine laufende Instanz ist ein Container. Stack nennen wir eine zusammengehörige Gruppe von Diensten und Konfigurationen. Das ist kein eigenes Docker-Objekt. Das Compose-Projekt fasst Container, Netzwerke und Volumes zusammen.

Traefik und Prometheus verwenden Release-Tags. Die Web- und Backup-Images werden aus den mitgelieferten Dockerfiles gebaut, deren Basis-Images per Digest festgelegt sind. Der Backup-Build prüft zusätzlich die Prüfsumme des Quellcodes und aktualisiert ausdrücklich genannte Abhängigkeiten. Ein Dockerfile beschreibt den Image-Build; Compose beschreibt den Betrieb der Container. Fixierte Versionen machen Änderungen bewusst, installieren aber keine künftigen Sicherheitskorrekturen automatisch.

command übergibt Programmargumente. restart: unless-stopped startet einen beendeten Prozess neu, repariert aber keine fehlerhafte Anwendung. depends_on: [web] startet die Abhängigkeit zuerst, wartet jedoch nicht auf Betriebsbereitschaft. Datenbankanwendungen benötigen Bereitschaftsprüfungen oder Verbindungswiederholungen. Startreihenfolge

Dateien und dauerhafte Daten

Das Webseitenverzeichnis ist ein Bind-Mount: Ein vorhandener Hostpfad erscheint im Container. read_only: true an diesem Mount verhindert Schreibzugriffe. create_host_path: false meldet einen fehlenden Pfad, statt still ein Verzeichnis anzulegen.

metrics-data und backup-data sind von Docker verwaltete benannte Volumes. Sie bleiben beim Neuerstellen der Container erhalten. Dauerhaft gespeichert bedeutet nicht gesichert. Nutze unterstützte Exportverfahren; eine Kopie des laufenden Datenbankverzeichnisses ist nicht zwingend konsistent. Docker-Volumes

read_only auf Diensteebene schützt das Root-Dateisystem des Containers. Eingehängte Volumes können weiterhin beschreibbar sein. tmpfs stellt flüchtigen Arbeitsspeicher für temporäre Dateien bereit und verliert seinen Inhalt beim Stoppen.

Ports und Netzwerke

127.0.0.1:18080:8080 bedeutet Host-Loopback, Hostport 18080 und Containerport 8080. Der Webcontainer veröffentlicht keinen Port. Traefik erreicht ihn über http://web:8080 im internen Netzwerk lab. Das Netzwerk access ermöglicht die Loopback-Veröffentlichungen von Gateway und Metrikdienst. Es ersetzt weder Anmeldung noch eine Firewall-Regel für andere Projekte. Mit dns: [127.0.0.1] leitet der Gateway fehlende Dienstnamen nicht an externes DNS weiter. Laufende Dienstnamen löst Docker weiterhin auf. Dieser Gateway benötigt keine Internet-Namensauflösung.

Rechte und Ressourcen

cap_drop: [ALL] entfernt Linux-Capabilities. no-new-privileges verhindert zusätzlichen Rechtegewinn etwa durch setuid. Der einmalige Backup-Auftrag erhält CHOWN, DAC_OVERRIDE und FOWNER, damit er die geschützte Passwortdatei lesen sowie Besitz und Rechte wiederherstellen kann. Er hat kein Netzwerk und nur ausdrücklich eingebundene Pfade. Übernimm diese Ausnahme nicht pauschal für Webanwendungen und binde niemals das gesamte Host-Dateisystem ein.

mem_limit und pids_limit begrenzen Speicher und Prozesse. Zu enge Grenzen verursachen Abstürze. GOMEMLIMIT setzt dem Go-Laufzeitsystem des Gateways ein weicheres Speicherziel unterhalb des Containerlimits. Begrenzte Logdateien bremsen das Wachstum, ersetzen aber keinen Speicherplatzalarm.

Umgebungsvariablen und Geheimnisse

Die Projektdatei .env liefert Werte für Compose-Ersetzungen wie ${PORT}. Sie übergibt nicht automatisch alle Werte an Container. Dafür dienen environment oder env_file. Veröffentliche niemals die vollständig aufgelöste Ausgabe von docker compose config. Variablenersetzung

Das restic-Passwort wird als Compose-Secret eingebunden und über RESTIC_PASSWORD_FILE gelesen. So steht sein Wert nicht in YAML. Lokale Compose-Secrets sind Dateien, kein verschlüsselter Tresor. Schütze die Hostdatei und den Backup-Zugriff. Nicht jede Anwendung unterstützt Geheimnisse aus Dateien. Compose-Secrets

Weiter: DNS und Routing.

Alle Notizen →