78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
|
|
# Docker produktiv
|
||
|
|
|
||
|
|
Letzte Aktualisierung: 2026-02-21
|
||
|
|
|
||
|
|
## Ziel
|
||
|
|
|
||
|
|
Diese Anleitung beschreibt den Betrieb mit Domain auf Basis von `/docker-compose.prod.yml`.
|
||
|
|
|
||
|
|
## Voraussetzungen
|
||
|
|
|
||
|
|
- DNS zeigt auf den Server (`A/AAAA`)
|
||
|
|
- Ports `80` und `443` sind offen
|
||
|
|
- TLS-Zertifikate vorhanden
|
||
|
|
|
||
|
|
## Produktionsdateien
|
||
|
|
|
||
|
|
- Compose: `/docker-compose.prod.yml`
|
||
|
|
- Nginx: `/docker/nginx/prod.conf`
|
||
|
|
- PHP: `/docker/php/php.prod.ini`
|
||
|
|
- ENV-Vorlage: `/.env.prod.example`
|
||
|
|
|
||
|
|
## 1) Umgebung vorbereiten
|
||
|
|
|
||
|
|
`.env` auf Produktionswerte setzen:
|
||
|
|
|
||
|
|
- `APP_URL=https://deine-domain.tld`
|
||
|
|
- `APP_ENV=prod`
|
||
|
|
- `APP_DEBUG=false`
|
||
|
|
- stabile `APP_CRYPTO_KEY`
|
||
|
|
- starke DB/SMTP-Passwörter
|
||
|
|
|
||
|
|
## 2) Nginx auf Domain/TLS setzen
|
||
|
|
|
||
|
|
In `/docker/nginx/prod.conf`:
|
||
|
|
|
||
|
|
- `server_name` auf echte Domain(s) anpassen
|
||
|
|
|
||
|
|
Zertifikate ablegen:
|
||
|
|
|
||
|
|
- `/docker/nginx/certs/fullchain.pem`
|
||
|
|
- `/docker/nginx/certs/privkey.pem`
|
||
|
|
|
||
|
|
## 3) Produktion starten
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose -f docker-compose.prod.yml up --build -d
|
||
|
|
```
|
||
|
|
|
||
|
|
Konfiguration validieren:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose -f docker-compose.prod.yml config
|
||
|
|
```
|
||
|
|
|
||
|
|
## 4) Betrieb prüfen
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose -f docker-compose.prod.yml logs -f nginx php scheduler
|
||
|
|
```
|
||
|
|
|
||
|
|
Prüfen:
|
||
|
|
|
||
|
|
- App über `https://...` erreichbar
|
||
|
|
- Login funktioniert
|
||
|
|
- Scheduler läuft minütlich (Logausgaben)
|
||
|
|
|
||
|
|
## 5) Bestandssysteme
|
||
|
|
|
||
|
|
Bei bestehender Datenbank:
|
||
|
|
|
||
|
|
- idempotentes SQL-Update manuell ausführen
|
||
|
|
(Auto-Init über `db/init/init.sql` greift nur beim ersten DB-Setup)
|
||
|
|
|
||
|
|
## Hinweise
|
||
|
|
|
||
|
|
- `phpmyadmin` ist in Prod absichtlich nicht enthalten.
|
||
|
|
- Wenn ein externer Reverse-Proxy TLS terminiert, kann `prod.conf` auf HTTP intern reduziert werden; `APP_URL` bleibt trotzdem `https://...`.
|