0 XP
?
Intermédiaire45 min30 XP

Objectifs de cette leçon

  • Déployer une application avec l'assistance IA
  • Configurer les environnements de production
  • Monitorer et maintenir l'application déployée

Docker et déploiement 🚀

Le pipeline de déploiement

Code source
     │
     ↓
Dockerfile → docker-compose.yml
     │
     ↓
Build de l'image Docker
     │
     ↓
Push vers un registre
     │
     ↓
Pull sur le serveur de production
     │
     ↓
docker compose up -d
     │
     ↓
Application en ligne ✅

Dockeriser une application complète

docker-compose.yml

version: '3.8'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    environment:
      - API_URL=http://api:8000
    networks:
      - app-network

  api:
    build: ./api
    ports:
      - "8000:8000"
    environment:
      - DB_HOST=mysql
      - DB_NAME=app
      - DB_USER=root
      - DB_PASS=secret
    depends_on:
      - mysql
    networks:
      - app-network

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: app
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - app-network

volumes:
  mysql-data:

networks:
  app-network:
    driver: bridge

Déployer sur un VPS

Étape 1 : Préparer le serveur

# SSH vers le serveur
ssh root@votre-vps.com

# Installer Docker
apt update && apt install -y docker.io docker-compose-plugin

# Ajouter l'utilisateur au groupe docker
usermod -aG docker $USER

Étape 2 : Cloner et lancer

# Cloner le projet
git clone https://github.com/user/projet.git
cd projet

# Build et lancement
docker compose build
docker compose up -d

# Vérifier
docker compose ps
docker compose logs -f api

Étape 3 : Configurer Nginx

server {
    listen 80;
    server_name monapp.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
    }

    location /api {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
    }
}

Étape 4 : SSL avec Let's Encrypt

apt install certbot python3-certbot-nginx
certbot --nginx -d monapp.com

Déployer sur Vercel (Frontend)

# Installer Vercel CLI
npm i -g vercel

# Déployer
vercel

# Le déploiement automatique se déclenche à chaque push sur main

Utiliser l'IA pour le déploiement

Bon prompt :

Crée un Dockerfile pour une application Next.js avec les spécificités :
- Multi-stage build (deps → build → runner)
- Output standalone
- Utilisateur non-root
- Healthcheck
- Port 3000

Exercices 🎯

  1. Docker : Dockerisez une application Node.js + MySQL.
  2. VPS : Déployez l'application sur un VPS (DigitalOcean, Vultr, etc.).
  3. CI/CD : Configurez GitHub Actions pour builder automatiquement.

Prochaine leçon : Projet final.

Pipeline de déploiement
Interactif
Étape 1/6