Docker Compose décrit une stack multi-conteneurs dans un seul fichier et la lance en une commande. Voici le guide de déploiement ; d'abord installez Docker si ce n'est pas fait. Pour une stack spécifique aux agents IA (agent + base vectorielle + Redis), voyez docker-compose pour agents IA.
1. Une stack : app + base de données + reverse proxy
# /opt/stack/docker-compose.yml
services:
app:
image: your/app:latest
restart: unless-stopped
env_file: [.env]
depends_on: [db]
# no ports: — reached only through the proxy below
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes: ["pg:/var/lib/postgresql/data"] # internal only
caddy: # HTTPS automatically
image: caddy:2
restart: unless-stopped
ports: ["80:80", "443:443"] # the only public entrypoint
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes: { pg: {}, caddy_data: {} }
Les secrets vivent dans .env, jamais dans le fichier compose :
# /opt/stack/.env (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string
Un Caddyfile minimal proxie votre domaine vers l'app et récupère HTTPS tout seul :
app.yourdomain.com {
reverse_proxy app:8080
}
2. Lancez-la
cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app
restart: unless-stopped sur chaque service + Docker activé au démarrage = la stack revient d'elle-même après un reboot.
3. Commandes du quotidien
docker compose pull && docker compose up -d # update images
docker compose down # stop the stack
docker compose restart app # restart one service
Le point que les gens ratent : les ports exposés
Docker publie les ports via iptables, donc un conteneur avec ports: ["5432:5432"] est joignable depuis internet même derrière un pare-feu UFW que vous croyiez fermé. Ne publiez que le point d'entrée public (le proxy sur 80/443) ; gardez les bases de données et caches sur le réseau compose ou liés à 127.0.0.1. Tout ce qui sert du trafic web nécessite un plan à IP dédiée ; associez à un pare-feu UFW.
Pour toute une stack derrière une IP, voyez auto-héberger plusieurs services. Root en une minute environ, NVMe, sans KYC, paiement en crypto.
Commentaires
Pas encore de commentaires. Soyez le premier.