Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Déployer des applications avec Docker Compose sur un VPS Linux

Mis à jour le 15 octobre 2026 5 min de lecture 9 sections

Docker Compose sur un VPS Linux : orchestrer ses conteneurs simplement

Docker permet de lancer des conteneurs isolés sur un VPS Linux ou un serveur dédié, mais dès qu'une application nécessite plusieurs services (un serveur web Nginx, une base de données MariaDB, un cache Redis), les gérer individuellement en ligne de commande devient vite ingérable. Docker Compose résout ce problème : un seul fichier YAML décrit toute la pile applicative, et une seule commande en shell la démarre, l'arrête ou la recrée.

Ce guide couvre l'installation de Docker Compose sur Ubuntu 24.04 et Debian 12, la rédaction d'un fichier compose.yaml complet avec ses configurations, et les opérations courantes d'administration sur un VPS. Les exemples s'adressent aux administrateurs qui ont déjà installé Docker Engine (voir notre guide installer Docker sur un VPS) et veulent passer à l'orchestration multi-conteneurs.

Installer Docker Compose (plugin officiel)

Connectez-vous à votre VPS en SSH, puis installez le plugin Docker Compose depuis les dépôts officiels :

sudo apt-get update
sudo apt-get install -y docker-compose-plugin

Vérifiez l'installation depuis votre shell :

docker compose version
# Docker Compose version v2.x.y

La commande s'écrit désormais docker compose (avec espace), sans tiret. L'ancienne commande docker-compose (avec tiret, v1) est dépréciée depuis 2023. Pour les scripts d'administration automatisés, utilisez toujours la syntaxe v2.

Structurer un fichier compose.yaml

Depuis votre shell SSH, créez un répertoire dédié à votre application sur le serveur Linux, puis rédigez le fichier de configurations :

mkdir ~/monapp && cd ~/monapp
nano compose.yaml

Exemple de configurations multi-services : un serveur Nginx et un cache Redis :

services:
  web:
    image: nginx:stable-alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped

  cache:
    image: redis:7-alpine
    restart: unless-stopped

volumes:
  redis-data:
  • services : liste les conteneurs à gérer ensemble. Chaque entrée est un service avec son image Docker, ses ports et ses volumes.
  • ports : mappe le port hôte (gauche) au port conteneur (droite). Pour ne pas exposer un service directement sur internet, omettez ports et passez par un reverse proxy.
  • volumes : monte des répertoires hôte ou des volumes nommés dans le conteneur. Les volumes nommés persistent entre les environnements de redémarrage du serveur.
  • restart: unless-stopped : le conteneur redémarre automatiquement après un crash ou un redémarrage du VPS Linux, sauf si un administrateur l'a arrêté manuellement.

Commandes essentielles en ligne de commande

Depuis le répertoire contenant compose.yaml, les commandes principales pour administrer vos environnements Docker sur le serveur Linux sont :

# Démarrer tous les services en arrière-plan
docker compose up -d

# Voir l'état des conteneurs
docker compose ps

# Consulter les logs (suivre en temps réel)
docker compose logs -f

# Arrêter les services sans supprimer les volumes
docker compose stop

# Arrêter et supprimer les conteneurs (volumes nommés conservés)
docker compose down

# Mettre à jour les images et recréer les conteneurs
docker compose pull && docker compose up -d

Pour redémarrer uniquement un service après une modification de ses configurations : docker compose restart web. Ces commandes shell constituent la base de tout script d'administration Docker Compose.

Utiliser un fichier .env pour les secrets

Ne stockez jamais de mot de passe en clair dans vos configurations compose.yaml. Les administrateurs du serveur placent les valeurs sensibles dans un fichier .env au même niveau :

DB_PASSWORD=MonMotDePasseSecurise
DB_NAME=mabase

Référencez-les dans le fichier de configurations :

services:
  db:
    image: mariadb:11
    environment:
      MARIADB_ROOT_PASSWORD: ${DB_PASSWORD}
      MARIADB_DATABASE: ${DB_NAME}
    restart: unless-stopped

Ajoutez .env à votre .gitignore pour ne jamais le versionner. Docker Compose charge automatiquement ce fichier au démarrage de la pile.

Communication entre services sur le VPS

Par défaut, Docker Compose crée un réseau bridge partagé entre tous les services du même fichier de configurations. Les conteneurs se joignent par leur nom de service comme nom d'hôte, sans connaître leur adresse IP interne :

# Commande suivante : connexion à MariaDB depuis le service "web"
mysql -h db -u root -p

Ce réseau interne est isolé de l'extérieur. Seuls les ports déclarés dans ports: sont accessibles depuis internet. Pour une administration sécurisée du serveur dédié ou VPS, exposez uniquement le reverse proxy sur le port 80/443 et laissez les bases de données et caches sans entrée ports. Pour aller plus loin, configurez un reverse proxy Nginx avec TLS.

Sauvegarder les données persistantes

Les volumes nommés stockent les données en dehors du cycle de vie des conteneurs. Pour sauvegarder un volume depuis le shell Linux :

# Lister les volumes gérés par Docker
docker volume ls

# Exporter le contenu d'un volume vers une archive
docker run --rm -v monapp_redis-data:/data -v /tmp:/backup \
  alpine tar czf /backup/redis-data.tar.gz -C /data .

Intégrez cette commande dans un script de sauvegarde planifié, puis transférez les archives vers un serveur distant avec rsync.

Démarrage automatique au boot du serveur Linux

Avec restart: unless-stopped, les conteneurs redémarrent si le daemon Docker tourne. Assurez-vous que Docker lui-même démarre automatiquement au démarrage du serveur :

sudo systemctl enable docker
sudo systemctl status docker

Pour une gestion plus fine par un administrateur (ordre de démarrage, dépendances système), créez un service systemd qui appelle docker compose up -d après le démarrage de docker.service. Cette approche permet de gérer plusieurs environnements Docker indépendants sur le même VPS.

Surveiller et diagnostiquer les environnements

Commandes utiles pour opérer et surveiller votre pile Compose en production sur un VPS ou serveur dédié Linux :

# Ressources consommées par chaque conteneur (RAM, CPU)
docker stats

# Logs d'un service précis depuis 30 min
docker compose logs --since 30m web

# Ouvrir un shell dans un conteneur en cours
docker compose exec web sh

Pour une vue globale du serveur Linux (CPU, mémoire, I/O disque), combinez docker stats avec htop ou btop en parallèle dans votre session SSH.

Vous cherchez un VPS Linux fiable pour héberger vos applications Docker Compose ? ElypseCloud propose des VPS SSD avec Ubuntu et Debian préconfigurés, livrés en moins d'une minute.

Voir les VPS Linux ElypseCloud