Aller au contenu principal
Deployer une Application Docker sur un Serveur VPS : Guide Complet Pas a Pas
Retour aux articles

Deployer une Application Docker sur un Serveur VPS : Guide Complet Pas a Pas

Automate 1 min de lecture

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 :

bash
ssh root@votre-adresse-ip

Pour plus de securite, il est recommande d'utiliser une cle SSH plutot qu'un mot de passe :

bash
ssh -i ~/.ssh/id_rsa root@votre-adresse-ip

Mettre a Jour le Systeme

Avant toute installation, mettez a jour les paquets du systeme :

bash
# 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 :

bash
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 :

bash
# 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 :

bash
docker --version
docker run hello-world

Installation de Docker Compose

Docker Compose permet de gerer plusieurs conteneurs simultanement :

bash
# 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 :

text
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 :

yaml
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 :

bash
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 :

bash
# 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 :

bash
# 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 :

bash
# 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 :

yaml
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 :

bash
#!/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 :

bash
# 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 :

bash
# 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