Schnellstart und Aufbau
Appliance starten, Projektaufbau, persistente Daten und das Installieren von Extensions.
Schnellstart
cp .env.example .env # Passwörter anpassen!
docker compose up -d --build- Frontend: http://typo3-v14.localhost:8088/
- Backend: http://typo3-v14.localhost:8088/typo3/ (Zugang aus
TYPO3_ADMIN_USERNAMEundTYPO3_ADMIN_PASSWORD)
*.localhost zeigt in allen gängigen Browsern automatisch auf 127.0.0.1. Falls ein Tool den Namen nicht auflöst, 127.0.0.1 typo3-v14.localhost in /etc/hosts eintragen.
Der Admin ist System-Maintainer und hat damit auch Zugriff auf die Admin-Tools (Install Tool).
Projektaufbau
├── Dockerfile Stage app (PHP-FPM + TYPO3), Stage web (nginx)
├── docker-compose.yml web, php, db, elasticsearch, scheduler
├── docker-compose.override.yml lokale Anpassung: id.dev.sonia.de → Docker-Host
├── composer.json TYPO3-Pakete – hier Extensions ergänzen
├── BACKUP.sh / RESTORE.sh Backup als .tar.gz / Wiederherstellung
├── CREATE_SHELL_ARCHIVE_BACKUP.sh Backup als selbstentpackendes .sh
├── packages/
│ ├── oidc_backend/ Keycloak-Rollen → Backend-Gruppen/Admin, Benutzername
│ └── site_package/ Frontend: Templates, Sprachumschalter, Suche, Inhalte
└── config/
├── certs/ zusätzliche CA-Zertifikate (*.crt), z. B. Ostfalia RZ Root CA
├── nginx/default.conf TYPO3-Server-Block (DocumentRoot public/, Sperren, Caching)
├── php/typo3.ini PHP-/OPcache-Einstellungen
├── php/fpm-pool.conf FPM-Pool (clear_env = no, Ping-Endpunkt)
├── mariadb/typo3.cnf utf8mb4 + InnoDB-Tuning
└── typo3/
├── entrypoint.sh DB-Wartezeit, Erstinstallation, extension:setup
├── healthcheck.sh Healthcheck des php-Containers
└── additional.php Konfiguration aus UmgebungsvariablenDer Ordner config/ enthält die Konfigurationsdateien des Projekts. Er ist nicht mit dem gleichnamigen TYPO3-Ordner im Container zu verwechseln.
Persistente Daten (Docker-Volumes)
| Volume | Inhalt |
|---|---|
db-data | Datenbank |
typo3-config | config/system/settings.php, config/sites/ |
typo3-fileadmin | Uploads (public/fileadmin), von nginx nur lesend eingebunden |
typo3-temp | public/typo3temp (generierte Assets), von nginx nur lesend eingebunden |
typo3-var | Logs, Caches, Sessions, Sprachpakete |
es-data | Suchindex; wird aus der Datenbank neu aufgebaut und ist deshalb nicht im Backup |
Der Code (vendor/, public/_assets) steckt in beiden Images (php und nginx). Updates und neue Extensions kommen deshalb immer per Rebuild in die Container.
Extensions installieren und TYPO3 aktualisieren
# Extension hinzufügen (lokales PHP+Composer oder im Container)
docker compose run --rm --no-deps --entrypoint "" -v "$PWD:/app" -w /app php \
composer require georgringer/news --no-install
docker compose up -d --buildBeim Start laufen automatisch typo3 extension:setup (Datenbankschema) und cache:flush. Die composer.lock gehört ins Repository, damit jeder Build dieselben Paketversionen erhält.
Eigene Extensions und Sitepackages kommen nach packages/<name>/ und werden mit composer require vendor/name:@dev eingebunden.