Kapittel 6 · 6.2
Arbeidsmappen din med compose.yaml, .env og Caddy
Med docker compose beskriver du alle containerne dine i én fil. I denne veiledningen ligger alle appene i mappen /srv/diensten, med Caddy som inngangsdør som ordner https for hver app. Oppskriftene i kapittel 7 legger hele tiden til litt her. Hvordan compose og brannmuren fungerer sammen, kan du lese i Docker compose og brannmuren i kurset VPS og Linux-serveradministrasjon.
Mappen og filene
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Begynn med bare 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:
Og Caddyfile i samme mappe:
{
email beheer@example.com
}
En linje version: øverst er ikke lenger nødvendig. Du ser den fortsatt i eldre eksempler.
Start og se
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 starter alt i bakgrunnen. Med Ctrl+C slutter du å følge loggene, men containerne fortsetter å kjøre. Endrer du Caddyfile, laster du den inn på nytt med:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Hemmeligheter i .env
Passord og tokens legger du ikke i compose.yaml, men i en fil .env i samme mappe. I compose.yaml viser du til dem med ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Legg aldri .env i Git, og ikke del den.
Kjører Caddy allerede som tjeneste på serveren din?
Har du installert Caddy eller nginx som i kapittel 5, er port 80 og 443 allerede opptatt. Velg ett av to:
- Slå av tjenesten på serveren (
sudo systemctl disable --now caddyellernginx) og flytt nettstedene dine til Caddyfile i/srv/diensten. Det er det oppskriftene forutsetter. - Eller la tjenesten på serveren stå, dropp Caddy i compose, og publiser hver app bare på
127.0.0.1(se Docker og brannmuren: publiser porter på en trygg måte). Da lager du en reverse proxy per app som i En app bak en omvendt proxy.
