Files
gestion-certificats2/docker-compose.yml
2025-06-14 19:03:54 +02:00

70 lines
3.1 KiB
YAML

version: '3.8'
services:
nginx:
image: nginx:latest
container_name: cert-gestion-nginx
ports:
- "980:80"
- "9443:443" # Optionnel: Pour HTTPS si vous décidez d'ajouter un certificat à Nginx
volumes:
- ./nginx:/etc/nginx/conf.d:ro # Fichiers de configuration Nginx
- ./app/public:/var/www/html:ro # Contenu statique et point d'entrée de l'application
- ./tls:/opt/tls:rw # Accès en lecture aux certificats pour Nginx si besoin (par ex. pour OCSP)
- ./storage/nginx_logs:/var/log/nginx:rw # Volume pour les logs de Nginx
depends_on:
- php-fpm # Nginx dépend de PHP-FPM pour servir l'application
networks:
- cert-gestion-network
restart: unless-stopped # Nouvelle ligne: Redémarre Nginx si le service s'arrête de manière inattendue
php-fpm:
build:
context: ./php # Construit l'image à partir du dossier ./php
dockerfile: Dockerfile
container_name: cert-gestion-php-fpm
volumes:
- ./app:/var/www/html:rw # Code source de l'application PHP (lecture/écriture pour logs, sessions)
- ./scripts:/opt/scripts:rw # Scripts shell pour la gestion des certificats (lecture seule)
- ./tls:/opt/tls:rw # Dossier pour les certificats et clés (lecture/écriture pour création/révocation)
- ./storage/php_logs:/var/log/app:rw # Volume pour les logs de l'application PHP
environment:
# Variables d'environnement pour PHP (par exemple, pour la connexion DB)
# Il est recommandé d'utiliser un fichier .env avec un outil comme phpdotenv en production
DB_HOST: mysql
DB_NAME: cert_gestion
DB_USER: user
DB_PASSWORD: password_secret # À CHANGER POUR LA PRODUCTION
depends_on:
- mysql # PHP-FPM dépend de MySQL
networks:
- cert-gestion-network
restart: unless-stopped # Nouvelle ligne: Redémarre Nginx si le service s'arrête de manière inattendue
command: >
bash -c "chown -R www-data:www-data /var/log/app /var/www/html/storage && chmod -R 775 /var/log/app /var/www/html/storage && chmod +x /opt/scripts/*.sh && php-fpm"
mysql:
image: mysql:8.0
container_name: cert-gestion-mysql
environment:
MYSQL_ROOT_PASSWORD: root_password_secret # À CHANGER POUR LA PRODUCTION
MYSQL_DATABASE: cert_gestion
MYSQL_USER: user
MYSQL_PASSWORD: password_secret # À CHANGER POUR LA PRODUCTION
volumes:
- mysql_data:/var/lib/mysql # Volume persistant pour les données de la base de données
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro # Script exécuté au premier démarrage pour créer la DB et les tables
networks:
- cert-gestion-network
restart: unless-stopped # Nouvelle ligne: Redémarre Nginx si le service s'arrête de manière inattendue
volumes:
mysql_data: # Définition du volume nommé pour MySQL
# Ces volumes sont définis implicitement par les chemins de montage bind mounts:
# ./storage/nginx_logs
# ./storage/php_logs
networks:
cert-gestion-network:
driver: bridge # Réseau bridge pour la communication interne entre les conteneurs