Guide

Une pile Docker Compose de production sur un VPS

IntermédiaireLecture de 25 minMis à jour 27 juin 2026
Réponse courte

Une pile de production viable est Caddy pour le TLS automatique, votre application, PostgreSQL et Redis, définis dans un fichier Compose avec des volumes nommés et des vérifications de santé. Sur 8 Go de RAM avec NVMe, cela gère un trafic substantiel, et un instantané avant chaque déploiement rend le retour en arrière une opération de deux minutes.

01 Installer Docker depuis le dépôt officiel

Distribution packages lag significantly. The convenience script is fine on a fresh instance.

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

02 Écrire le fichier Compose

Caddy obtains and renews certificates automatically, which removes the single most common source of production breakage.

services:
  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    ports: ["80:80", "443:443", "443:443/udp"]
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
  app:
    build: .
    restart: unless-stopped
    depends_on: { db: { condition: service_healthy } }
    environment:
      DATABASE_URL: postgres://app:${DB_PASS}@db:5432/app
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: ${DB_PASS}
    volumes: [pgdata:/var/lib/postgresql/data]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 10s
volumes: { caddy_data: {}, pgdata: {} }

03 Configurer Caddy

Three lines is a complete TLS-terminating reverse proxy with automatic certificate renewal.

app.example.com {
  encode zstd gzip
  reverse_proxy app:8000
}

04 Sauvegarder la base de données, pas le conteneur

A file copy of a running Postgres data directory produces a corrupt backup that appears to succeed. Dump it properly.

docker compose exec -T db pg_dump -U app app | zstd > /backups/app-$(date +%F).sql.zst

05 Instantané avant chaque déploiement

Free, instant, and it converts a failed deployment from an incident into a rollback.

Questions fréquemment posées

De combien de RAM ai-je besoin ?

Additionnez les limites de mémoire des conteneurs et ajoutez environ 1 Go pour l'hôte. Cette pile est confortable avec 8 Go.

Devrais-je utiliser Docker Swarm ou Kubernetes à la place ?

Pas pour un seul serveur. Compose est l'outil correct jusqu'à ce que vous ayez réellement plus d'un nœud.