Kapitel 6 · 6.2
Ihr Arbeitsverzeichnis mit compose.yaml, .env und Caddy
Mit docker compose beschreiben Sie alle Ihre Container in einer einzigen Datei. In dieser Anleitung liegen alle Apps im Verzeichnis /srv/diensten, mit Caddy als Eingangstür, die für jede App https regelt. Die Rezepte in Kapitel 7 fügen hier jeweils ein Stück hinzu. Wie compose und die Firewall zusammenarbeiten, lesen Sie in Docker compose und die Firewall im Kurs VPS und Linux-Serververwaltung.
Das Verzeichnis und die Dateien
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Beginnen Sie nur mit Caddy:
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
volumes:
caddy-data:
caddy-config:
Und das Caddyfile im selben Verzeichnis:
{
email beheer@example.com
}
Eine Zeile version: ganz oben ist nicht mehr nötig; Sie sehen sie noch in älteren Beispielen.
Starten und anzeigen
anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker compose ps
anna@web1:/srv/diensten$ sudo docker compose logs -f caddy
up -d startet alles im Hintergrund. Mit Strg+C beenden Sie das Mitlesen der Logs; die Container laufen weiter. Wenn Sie das Caddyfile ändern, laden Sie es neu mit:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Geheimnisse in .env
Passwörter und Tokens schreiben Sie nicht in compose.yaml, sondern in eine Datei .env im selben Verzeichnis. In compose.yaml verweisen Sie darauf mit ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Legen Sie .env niemals in Git ab und geben Sie die Datei nicht weiter.
Caddy läuft bereits als Dienst auf Ihrem Server?
Haben Sie Caddy oder nginx wie in Kapitel 5 installiert, dann sind die Ports 80 und 443 bereits belegt. Wählen Sie eine von zwei Möglichkeiten:
- Schalten Sie den Dienst auf dem Server ab (
sudo systemctl disable --now caddyodernginx) und ziehen Sie Ihre Sites in das Caddyfile in/srv/dienstenum. Davon gehen die Rezepte aus. - Oder lassen Sie den Dienst auf dem Server bestehen, lassen Caddy in compose weg und veröffentlichen jede App nur auf
127.0.0.1(siehe Docker und die Firewall: Ports sicher veröffentlichen). Dann richten Sie pro App einen Reverse Proxy ein wie in Eine App hinter einem Reverse Proxy.
