Capítulo 6 · 6.2
A sua pasta de trabalho com compose.yaml, .env e Caddy
Com docker compose descreve todos os seus contentores num único ficheiro. Neste manual, todas as aplicações ficam na pasta /srv/diensten, com o Caddy como porta de entrada que trata do https para cada aplicação. As receitas do capítulo 7 acrescentam sempre uma pequena parte a esta configuração. Como o compose e a firewall funcionam em conjunto, pode ler em Docker compose e a firewall do curso VPS e gestão de servidores Linux.
A pasta e os ficheiros
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Comece apenas com o 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:
E o Caddyfile na mesma pasta:
{
email beheer@example.com
}
Uma linha version: no topo já não é necessária; ainda a encontra em exemplos antigos.
Iniciar e consultar
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 inicia tudo em segundo plano. Com Ctrl+C deixa de acompanhar os registos; os contentores continuam a funcionar. Se alterar o Caddyfile, volte a carregá-lo com:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Segredos em .env
As palavras-passe e os tokens não se colocam em compose.yaml, mas sim num ficheiro .env na mesma pasta. Em compose.yaml faz referência a eles com ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Nunca coloque .env no Git e não o partilhe.
O Caddy também já está instalado como serviço no seu servidor?
Se instalou o Caddy ou o nginx como no capítulo 5, as portas 80 e 443 já estão ocupadas. Escolha uma de duas opções:
- Desative o serviço no servidor (
sudo systemctl disable --now caddyounginx) e mude os seus sites para o Caddyfile em/srv/diensten. É isto que as receitas pressupõem. - Ou mantenha o serviço no servidor, omita o Caddy no compose e publique cada aplicação apenas em
127.0.0.1(consulte Docker e a firewall: publicar portas em segurança). Nesse caso, cria um reverse proxy por aplicação, como em Uma aplicação atrás de um reverse proxy.
