
Deployer une Application Docker sur un Serveur VPS : Guide Complet Pas a Pas
Introduction
Le deploiement d'une application Docker sur un serveur VPS est une competence essentielle pour tout developpeur ou administrateur systeme. Ce guide pratique vous accompagnera de la preparation du serveur jusqu'a la mise en production de vos conteneurs.
A la fin de ce tutoriel, vous serez capable de deployer et maintenir une application Dockerisee sur un serveur distant de maniere securisee et efficace.
Preparer le Serveur VPS
Acceder au Serveur en SSH
La premiere etape consiste a vous connecter a votre serveur VPS via SSH :
ssh root@votre-adresse-ip
Pour plus de securite, il est recommande d'utiliser une cle SSH plutot qu'un mot de passe :
ssh -i ~/.ssh/id_rsa root@votre-adresse-ip
Mettre a Jour le Systeme
Avant toute installation, mettez a jour les paquets du systeme :
# Pour Ubuntu/Debian
apt update && apt upgrade -y
# Pour CentOS/RHEL
yum update -y
Creer un Utilisateur Dedie
Pour des raisons de securite, evitez d'utiliser le compte root pour les operations quotidiennes :
adduser deployeur
passwd deployeur
usermod -aG sudo deployeur
Installer Docker et Docker Compose
Installation de Docker
Suivez ces etapes pour installer Docker sur votre serveur :
# Telecharger le script d'installation officiel
curl -fsSL https://get.docker.com -o get-docker.sh
# Executer le script
sh get-docker.sh
# Ajouter l'utilisateur au groupe docker
usermod -aG docker deployeur
Verification de l'Installation
Verifiez que Docker est correctement installe :
docker --version
docker run hello-world
Installation de Docker Compose
Docker Compose permet de gerer plusieurs conteneurs simultanement :
# Telecharger Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Rendre le binaire executable
chmod +x /usr/local/bin/docker-compose
# Verifier l'installation
docker-compose --version
Configurer Votre Application
Structure du Projet
Organisez votre projet de la maniere suivante :
mon-application/
├── docker-compose.yml
├── .env
├── app/
│ ├── Dockerfile
│ └── ... (fichiers de l'application)
└── nginx/
├── default.conf
└── ssl/
Fichier docker-compose.yml
Voici un exemple de fichier docker-compose.yml pour une application web classique :
version: '3.8'
services:
app:
build: ./app
container_name: mon_app
restart: unless-stopped
environment:
- NODE_ENV=production
- DATABASE_URL=${DATABASE_URL}
networks:
- app-network
volumes:
- app-data:/var/lib/app/data
nginx:
image: nginx:alpine
container_name: mon_nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./nginx/ssl:/etc/nginx/ssl
depends_on:
- app
networks:
- app-network
db:
image: postgres:15
container_name: mon_db
restart: unless-stopped
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- db-data:/var/lib/postgresql/data
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
app-data:
db-data:
Fichier .env
Créez un fichier .env pour stocker vos variables sensibles :
DATABASE_URL=postgresql://user:password@db:5432/mydb
DB_NAME=mydb
DB_USER=user
DB_PASSWORD=votre_mot_de_passe_securise
Important : N'oubliez jamais d'ajouter .env dans votre .gitignore pour ne pas commiter les secrets.
Securiser le Deploiement
Configurer le Pare-feu
Activez et configurez le pare-feu pour limiter les acces :
# Installer UFW (Ubuntu)
apt install ufw -y
# Autoriser SSH, HTTP et HTTPS
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
# Activer le pare-feu
ufw enable
Configurer SSL avec Let's Encrypt
Pour obtenir un certificat SSL gratuit :
# Installer Certbot
apt install certbot python3-certbot-nginx -y
# Obtenir un certificat
certbot --nginx -d votre-domaine.com
Bonnes Pratiques de Securite
- Utilisez des mots de passe forts pour les bases de donnees
- Limitez les ports exposes uniquement aux services necessaires
- Mettez regulierement a jour les images Docker
- Activez les logs et la surveillance
- Sauvegardez regulierement vos volumes de donnees
Gérer les Conteneurs en Production
Commandes Essentielles
Voici les commandes Docker Compose les plus utiles :
# Demarrer les conteneurs
docker-compose up -d
# Arreter les conteneurs
docker-compose down
# Voir les logs
docker-compose logs -f
# Redemarrer un service
docker-compose restart app
# Mettre a jour les images
docker-compose pull
docker-compose up -d
# Voir l'etat des conteneurs
docker-compose ps
Surveillance et Logs
Configurez la rotation des logs pour eviter de remplir le disque :
services:
app:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Sauvegardes Automatisees
Mettez en place un script de sauvegarde pour vos volumes :
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M-%S)
docker run --rm -v mon-application_db-data:/data -v /backups:/backup alpine tar czf /backup/db-$DATE.tar.gz /data
Maintenance et Mises a Jour
Mettre a Jour l'Application
Pour deployer une nouvelle version de votre application :
# Se rendre dans le repertoire du projet
cd /chemin/vers/mon-application
# Tirer les nouvelles images
docker-compose pull
# Reconstruire si necessaire
docker-compose build
# Redemarrer les services
docker-compose up -d
Nettoyer les Ressources Inutilisees
Regularment, nettoyez les ressources Docker inutilisees :
# Supprimer les conteneurs arretes
docker container prune
# Supprimer les images orphelines
docker image prune
# Nettoyer completement (attention)
docker system prune -a
Conclusion
Vous avez maintenant toutes les clefs pour deployer et maintenir une application Docker sur un serveur VPS. Les points essentiels a retenir sont :
- La preparation et la securisation du serveur avant toute installation
- L'utilisation de Docker Compose pour orchestrer les services
- La mise en place de certificats SSL pour le chiffrement
- La surveillance et les sauvegardes regulieres des donnees
Pour aller plus loin, explorez les outils de CI/CD comme GitHub Actions ou GitLab CI pour automatiser vos deploiements.
Learn'in vous accompagne dans votre apprentissage technique. N'hesitez pas a consulter nos autres tutoriels pour approfondir vos connaissances en DevOps et deployment.
Articles similaires

Comprendre et utiliser le protocole FTP : Guide complet pour débutants
Apprenez le protocole FTP pour transférer des fichiers. Commandes essentielles, modes de connexion et sécurité pour vos projets web.
Similaires

Introduction a Linux Ubuntu : Guide Complet pour Debutants
Decouvrez Linux Ubuntu, la distribution Linux la plus populaire. Installation, configuration et premiers pas pour bien debuter sur ce systeme open source.
Similaires