Die Konfigurationsdateien im Detail

Wie Dockerfile, docker-compose.yml, docker-compose.override.yml und composer.json zusammenspielen, Abschnitt für Abschnitt erklärt.

Das Zusammenspiel

Vier Dateien beschreiben die komplette Appliance. Jede hat eine klar abgegrenzte Aufgabe:

DateiFrage, die sie beantwortetWirkt beim
composer.jsonWelche PHP-Pakete (TYPO3, Extensions) gehören dazu?Build
DockerfileWie entstehen die Images für PHP und nginx?Build
docker-compose.ymlWelche Container laufen, mit welchen Daten, Variablen und Abhängigkeiten?Start und Betrieb
docker-compose.override.ymlWas ist auf diesem Rechner anders?Start und Betrieb

Was bei docker compose up -d --build passiert:

  1. Compose liest docker-compose.yml, ergänzt sie um docker-compose.override.yml und setzt die Werte aus der .env ein.
  2. Für die Services mit build baut Docker das Dockerfile: Stage app installiert PHP, Systempakete und per Composer alle Pakete laut composer.lock. Stage web übernimmt die fertigen Dateien in ein nginx-Image.
  3. Compose startet db und elasticsearch. Sobald die Datenbank gesund ist, startet php. Dessen Entrypoint installiert TYPO3 beim ersten Mal, aktualisiert sonst das Datenbankschema, leert die Caches und gleicht den Suchindex ab.
  4. Ist php gesund, starten web und scheduler.

Daraus folgt die wichtigste Regel: Code steckt im Image, Daten stecken in Volumes. Änderungen an composer.json, am Dockerfile, an packages/ oder config/ brauchen einen Rebuild. Inhalte, Uploads und Einstellungen aus dem Backend überleben ihn.