Chapitre 6 · 6.2
Votre dossier de travail avec compose.yaml, .env et Caddy
Avec docker compose, vous décrivez tous vos conteneurs dans un seul fichier. Dans ce manuel, toutes les apps se trouvent dans le dossier /srv/diensten, avec Caddy comme porte d'entrée qui gère le https pour chaque app. Les recettes du chapitre 7 y ajoutent chaque fois un petit élément. Pour savoir comment compose et le pare-feu fonctionnent ensemble, consultez Docker compose et le pare-feu dans le cours VPS et administration de serveurs Linux.
Le dossier et les fichiers
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Commencez uniquement avec 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:
Puis le Caddyfile dans le même dossier :
{
email beheer@example.com
}
Une ligne version: en haut du fichier n'est plus nécessaire ; vous la verrez encore dans d'anciens exemples.
Démarrer et consulter
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 démarre tout en arrière-plan. Avec Ctrl+C, vous arrêtez le suivi des logs ; les conteneurs continuent de tourner. Si vous modifiez le Caddyfile, rechargez-le avec :
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Les secrets dans .env
Ne placez pas les mots de passe et les tokens dans compose.yaml, mais dans un fichier .env situé dans le même dossier. Dans compose.yaml, vous y faites référence avec ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Ne mettez jamais .env dans Git et ne le partagez pas.
Caddy tourne déjà comme service sur votre serveur ?
Si vous avez installé Caddy ou nginx comme au chapitre 5, les ports 80 et 443 sont déjà occupés. Choisissez l'une des deux options :
- Désactivez le service sur le serveur (
sudo systemctl disable --now caddyounginx) et transférez vos sites vers le Caddyfile dans/srv/diensten. C'est ce que supposent les recettes. - Ou laissez le service sur le serveur, retirez Caddy de compose et publiez chaque app uniquement sur
127.0.0.1(voir Docker et le pare-feu : publier des ports en toute sécurité). Vous créez alors un reverse proxy par app, comme dans Une application derrière un reverse proxy.
