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-pluginVérifiez l'installation depuis votre shell :
docker compose version
# Docker Compose version v2.x.yLa 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.yamlExemple 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
portset 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 -dPour 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=mabaseRé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-stoppedAjoutez .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 -pCe 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 dockerPour 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 shPour 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