Épreuve E6 : Infrastructure Docker

Docker Proxmox LXC Nginx Docker Swarm
Projet BTS SIO : Déploiement d'un intranet DSI complet sur infrastructure Docker/Proxmox, avec 6 services métiers conteneurisés et haute disponibilité.

Contexte

Dans le cadre de mon épreuve technique E6 du BTS SIO, j'ai déployé une infrastructure complète pour une entreprise fictive. L'objectif était de centraliser plusieurs outils métiers essentiels pour les administrateurs systèmes et réseaux, en offrant un point d'entrée unique et facile d'accès.

L'infrastructure repose sur un serveur Dell avec Proxmox, hébergeant des conteneurs LXC Debian qui exécutent Docker. Cette architecture à plusieurs niveaux de virtualisation offre flexibilité et isolation des services.


Architecture

L'infrastructure se compose de deux conteneurs Docker principaux, chacun hébergeant plusieurs services :

857Docker (172.20.57.24)

  • → Portainer :9443 : Interface de gestion Docker
  • → Wiki.js :2480 : Documentation avec intégration LDAP
  • → Stirling-PDF :2580 : Outil de conversion PDF
  • → IT-Tools :2680 : Boîte à outils IT
  • → Dozzle :8080 : Monitoring des logs
  • → Nginx :80 : Portail intranet

857DockerSl (172.20.57.25)

  • → Nginx :80 : Réplica haute disponibilité
  • → HAProxy :8080 : Load balancer
  • → phpMyAdmin :8081 : Administration BDD
  • → MySQL :3306 : Base de données

Services Déployés

Portainer

Interface web pour gérer l'ensemble des conteneurs Docker, leurs déploiements et redémarrages.

Wiki.js + LDAP

Documentation technique connectée à l'infrastructure LDAP pour authentification centralisée.

Nginx Intranet

Portail intranet centralisé servant de point d'entrée unique vers tous les services de l'entreprise.

HAProxy

Load balancer distribuant le trafic entre les réplicas Nginx.

phpMyAdmin + MySQL

Stack de base de données automatisé pour la formation des stagiaires.

Dozzle

Monitoring des logs en temps réel pour tous les conteneurs.


Docker Compose

Pour la formation des stagiaires, j'ai créé un stack automatisé avec phpMyAdmin et MySQL :

docker-compose.yml
version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql_formation
    environment:
      MYSQL_ROOT_PASSWORD: root2024!
      MYSQL_DATABASE: formation_db
      MYSQL_USER: john.doe0610
      MYSQL_PASSWORD: MySecurePass123
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - formation_network

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: phpmyadmin_formation
    environment:
      PMA_HOST: mysql
      PMA_USER: john.doe0610
      PMA_PASSWORD: MySecurePass123
    ports:
      - "8081:80"
    depends_on:
      - mysql
    networks:
      - formation_network

volumes:
  mysql_data:

networks:
  formation_network:
    driver: bridge

Portail Intranet Nginx

J'ai configuré un serveur web Nginx agissant comme intranet centralisé pour l'ensemble des services de l'entreprise. Ce portail offre un point d'accès unique permettant de naviguer facilement vers tous les outils déployés. Le fichier HTML est monté via un bind mount depuis /opt/intranet/index.html sur l'hôte, facilitant les mises à jour du contenu sans reconstruire l'image Docker.

Portail Intranet Nginx

Bilan

Cette réalisation m'a permis de maîtriser plusieurs compétences clés : conception d'infrastructure, déploiement et supervision de solutions conteneurisées, tout en utilisant des outils modernes pour simplifier la gestion et améliorer la fiabilité du système.

Une expérience qui illustre l'évolution vers les infrastructures conteneurisées modernes et l'importance de la veille technologique dans notre domaine.