Installation Docker
Ce guide explique comment installer Docker et deployer PCH-SIG avec Docker Compose.
Installation de Docker
Sur Ubuntu/Debian
# Mise a jour du systeme
sudo apt update && sudo apt upgrade -y
# Installation des dependances
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Ajout de la cle GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Ajout du depot Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installation de Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ajout de l'utilisateur au groupe docker
sudo usermod -aG docker $USER
Sur Windows avec Docker Desktop
- Telechargez Docker Desktop depuis https://www.docker.com/products/docker-desktop
- Executez l'installateur
- Activez WSL 2 si demande
- Redemarrez l'ordinateur
Sur Windows avec Docker Toolbox (sans Hyper-V)
Pour les serveurs Windows sans Hyper-V :
- Installez VirtualBox
- Installez Docker Toolbox
- Lancez Docker Quickstart Terminal
- La VM Docker sera accessible sur 192.168.99.100
Verification de l'installation
# Version Docker
docker --version
# Version Docker Compose
docker compose version
# Test Docker
docker run hello-world
Structure du projet
pch-sig/
├── backend/ # API Symfony
├── frontend/ # Application React
├── deploy/
│ ├── docker-compose.yml # Configuration Docker
│ ├── docker-compose.toolbox.yml # Config Docker Toolbox
│ └── nginx-conf/ # Configuration Nginx
├── monitoring/ # Grafana, Prometheus
└── documentation/ # Docusaurus
Deploiement avec Docker Compose
Fichier docker-compose.yml
Le fichier principal definit tous les services :
version: '3.8'
services:
# Base de donnees PostgreSQL avec PostGIS
postgres:
image: postgis/postgis:15-3.4-alpine
container_name: pch_postgres
environment:
POSTGRES_DB: pch_sig
POSTGRES_USER: pch_admin
POSTGRES_PASSWORD: pch_secure_2025
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
# Cache Redis
redis:
image: redis:7-alpine
container_name: pch_redis
command: redis-server --requirepass redis_secure_2025
volumes:
- redis_data:/data
ports:
- "6379:6379"
restart: always
# Backend PHP-FPM
backend:
image: webdevops/php:8.3-alpine
container_name: pch_backend
working_dir: /app
volumes:
- ../backend:/app
depends_on:
- postgres
- redis
restart: always
# Nginx Backend Proxy
nginx_backend:
image: nginx:alpine
container_name: pch_nginx_backend
volumes:
- ../backend:/app
- ./nginx-conf/backend.conf:/etc/nginx/conf.d/default.conf
ports:
- "8000:80"
depends_on:
- backend
restart: always
# Frontend Nginx
frontend:
image: nginx:alpine
container_name: pch_frontend
volumes:
- ../frontend/build:/usr/share/nginx/html
- ./nginx-conf/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
restart: always
# Mailpit (SMTP test)
mailpit:
image: axllent/mailpit:latest
container_name: pch_mailpit
ports:
- "1025:1025"
- "8025:8025"
restart: always
volumes:
postgres_data:
redis_data:
Lancer les conteneurs
Demarrage initial
cd deploy
# Construire et demarrer tous les services
docker compose up -d
# Verifier le statut
docker compose ps
Commandes utiles
# Voir les logs
docker compose logs -f
# Logs d'un service specifique
docker compose logs -f backend
# Arreter les services
docker compose down
# Arreter et supprimer les volumes
docker compose down -v
# Redemarrer un service
docker compose restart backend
Configuration initiale
Creer la base de donnees
# Acceder au conteneur backend
docker exec -it pch_backend bash
# Dans le conteneur, executer les migrations
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate --no-interaction
# Charger les donnees initiales
php bin/console doctrine:fixtures:load --no-interaction
Generer les cles JWT
# Dans le conteneur backend
php bin/console lexik:jwt:generate-keypair
Vider le cache
docker exec -it pch_backend php bin/console cache:clear
Build du Frontend
En local
cd frontend
npm install
npm run build
Le build est servi par Nginx
Les fichiers de frontend/build/ sont servis par le conteneur pch_frontend.
Docker Toolbox (Windows Server)
Configuration specifique
Pour le serveur serveur-production utilisant Docker Toolbox :
# docker-compose.toolbox.yml
version: '3.8'
services:
# Les services sont les memes mais accessibles
# via l'IP de la VM Docker : 192.168.99.100
Port Proxy Windows
Configurer le proxy de ports pour acceder depuis le reseau :
# Frontend (port 3000 -> VM:80)
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.99.100
# Backend (port 8000 -> VM:8000)
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=192.168.99.100
Verification du deploiement
Tester les services
| Service | URL de test | Resultat attendu |
|---|---|---|
| Frontend | http://localhost:3000 | Page de login |
| API | http://localhost:8000/api | Documentation API |
| Mailpit | http://localhost:8025 | Interface email |
Verifier les conteneurs
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"