Kapitel 6 · 6.2
Din arbetsmapp med compose.yaml, .env och Caddy
Med docker compose beskriver du alla dina containrar i en enda fil. I den här handboken ligger alla appar i mappen /srv/diensten, med Caddy som ytterdörr som ordnar https för varje app. Recepten i kapitel 7 lägger hela tiden till en liten bit här. Hur compose och brandväggen fungerar tillsammans läser du i Docker compose och brandväggen i kursen VPS och Linux-serverhantering.
Mappen och filerna
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Börja med bara 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:
Och Caddyfile i samma mapp:
{
email beheer@example.com
}
En rad version: högst upp behövs inte längre. Du ser den fortfarande i gamla exempel.
Starta och titta
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 startar allt i bakgrunden. Med Ctrl+C slutar du följa loggarna. Containrarna fortsätter att köra. Ändrar du Caddyfile laddar du om den med:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Hemligheter i .env
Lösenord och tokens lägger du inte i compose.yaml, utan i en fil .env i samma mapp. I compose.yaml hänvisar du till dem med ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Lägg aldrig .env i Git och dela den inte.
Körs Caddy redan som tjänst på din server?
Har du installerat Caddy eller nginx som i kapitel 5 är port 80 och 443 redan upptagna. Välj ett av två alternativ:
- Stäng av tjänsten på servern (
sudo systemctl disable --now caddyellernginx) och flytta dina webbplatser till Caddyfile i/srv/diensten. Det är vad recepten utgår från. - Eller behåll tjänsten på servern, hoppa över Caddy i compose och publicera varje app bara på
127.0.0.1(se Docker och brandväggen: publicera portar säkert). Då skapar du en reverse proxy per app som i En app bakom en reverse proxy.
