Docker Compose - MaximeDanlee/admin2-projet GitHub Wiki
Docker Compose
Dans le but de synchoniser le lancement des différents conteneurs pour le service Web Publique (nginx, php, certbot) un fichier docker-compose a été écrit. Ce fichier permet de configurer un ensemble de conteneurs à l'avance et de les lancer avec une simple commande :
docker-compose up
Pour arrêter cet ensemble de conteneurs, lancer la commande suivante :
docker-compose stop
Cette façon d'utiliser Docker est disponible sur tous les serveurs ayant installé docker compose.
Explications du Fichier
Le fichier ci-dessous fait donc plusieurs choses :
- Il démarre les différents services spécifiés (web publique, php, certbot),
- Indique les commandes à lancer dans le conteneur,
- Il lies les éventuels volumes au conteneur,
- Il crée les réseaux spécifiés,
- Il place les conteneurs dans les réseaux spécifiés.
Voici le contenu du fichier que nous avons utilisé, completé avec des commentaires
services:
web_publique:
image: adminprojet123/web_public:latest
# indique qu'il faut toujours tenter de redémarrer le conteneur, peu importe la cause d'arrêt
restart: always
# indique les ports à lier au vps
ports:
- "80:80"
- "443:443"
# indique les différents volumes à lier entre le conteneur et le vps
volumes:
# volume permettant d'enregistrer les logs sur le vps et non dans le conteneur
- ./nginx/logs/nginx.log:/etc/nginx/main_access.log
# volumes permettant d'utiliser l'https et également rendre les certificats permanenets sur le vps
- ./certbot/conf:/etc/nginx/ssl
- ./certbot/data:/var/www/certbot
# indique le réseau du conteneur
networks:
default:
ipv4_address: 172.16.129.4
# indique la commande à lancer dans le conteneur
# ici, on attend en permanence pour redémarrer les fichiers de configuration dès que le conteneur certbot a renouvlé les certificats pour le https
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
php:
image: adminprojet123/php_service:latest
# indique le réseau du conteneur
networks:
default:
ipv4_address: 172.16.129.9
# indique les différents volumes à lier entre le conteneur et le vps
volumes:
# volume pour placer les informations de connection à la base de données dans le conteneur
- ./nginx/mysql.ini:/etc/nginx/html/b2b/mysql.ini
certbot:
image: certbot/certbot:latest
# commande à lancer au lancement du conteneur
# dans ce cas ci, le conteneur va renouvler les différents certificats pour le https dès que nécessaire
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
# indique les différents volumes à lier entre le conteneur et le vps
volumes:
# volume pour rendre les logs disponible dans un fichier sur le vps
- ./certbot/logs:/var/log/letsencrypt
# volumes pour les différents certificats pour le https
- ./certbot/conf:/etc/letsencrypt
- ./certbot/data:/var/www/certbot
# différents réseaux
networks:
# on indique la présence d'un réseau déjà existant avant le lancement du docker compose
# aucun nouveau réseau est donc créé en lancant la commande docker-compose up
default:
external:
name: zone_dmz