Aller au contenu principal

Compose

Attention

Pour tous les développeurs, le fichier compose.yml est susceptible de changer, il serait alors judicieux de maintenir cette page à jour au possible.

Comme évoqué dans l'Initialisation, Docker a dû télécharger 3 images.

Lors de la creation de MyDocusaurus, le fichier compose.yml est tel :

name: myeureka
services:
mydatabase:
container_name: dev_myeureka_db
image: postgres:12-alpine
environment:
POSTGRES_DB: myeureka_sf6
POSTGRES_PASSWORD: admin
POSTGRES_USER: postgres
database:
ports:
- 8112:5432
volumes:
- dev_db_myeureka_data:/var/lib/postgresql/data
- ./restore.tar:/restore.tar

volumes:
dev_db_myeureka_data:

Ainsi que le fichier compose.nginxfpm.yml est tel :

services:
myserver:
image: nginx:latest
container_name: dev_myeureka_nginx
restart: always
ports:
- 80:80
volumes:
- ./public:/var/www/app/public
- ./.docker/nginx/config/app.dev.conf:/etc/nginx/conf.d/default.conf
links:
- myphp

myphp:
build: .docker/php-fpm
container_name: dev_myeureka_php
volumes:
- .:/var/www/app:cached
- /samba:/samba
# - ./.docker/php-fpm/config/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# - ./.docker/php-fpm/config/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.in
environment:
ENVIRONMENT: NGINX_PHPFPM
links:
- mydatabase
extra_hosts:
- host.docker.internal:host-gateway

La base de données PostgreSQL

Il y a 4 informations a retenir pour ce container:

  • Son nom : dev_myeureka_db
  • Le container va se baser sur une image déjà existante : postgre:12-alpine, rien de plus ici non plus.
  • Quelques variables d'environnement sont définies ici, ces 3 là serviront au container de créer une BDD par défaut, avec un utilisateur et son mot de passe comme indiqués.
  • Docker va lui partager 2 volumes de la machine hôte:
    • Le fichier ./restore.tar en tant que /restore.tar dans le container. Il s'agit d'un dump qui vous facilitera les rafraichissement de donnée avec la commande make refresh-db, à vous de le créer.
    • Le volume nommé dev_db_myeureka_data, c'est Docker qui se charge de sa gestion, avec ce volume, les données enregstrées par votre application locale sont persistantes, sans ce volume, si le container s'arrête, les données sont perdues.

Le serveur web NGINX

Il y a 4 informations a retenir pour ce container:

  • Son nom : dev_myeureka_nginx
  • Le container va se baser sur une image déjà existante : nginx:latest, rien de plus.
  • Docker va lui partager 2 volumes de la machine hôte:
    • Le fichier ./.docker/nginx/config/app.dev.conf en tant que /etc/nginx/conf.d/default.conf dans le container. Il s'agit du fichier de configuration du serveur Nginx.
    • Le dossier ./public au chemin /var/www/app/public dans le container. Il s'agit des assets public devant être accessible au client, les images, le style etc..
  • La communication avec le container PHP se fait dans la clé "links", où est précisé myphp.

Le langage PHP

Il y a 4 informations a retenir pour ce container:

  • Son nom : dev_myeureka_php
  • La communication avec le container PostgreSQL se fait dans la clé "links", où est précisé mydatabase.
  • Docker va lui partager 2 volumes de la machine hôte:
    • Le fichier ./samba en tant que /samba dans le container. Il s'agit d'un dossier où l'application enregistrera les fichiers XML de production des professionnels de santé à destination du logiciel JAS sur lequel fonctionnent les Robots vendu par Robotik Technology.
    • Le dossier . au chemin /var/www/app:cached dans le container. Il s'agit d'un volume pour le cache de l'application, toujours pour ne pas le regénérer si les containers sont coupés entre temps.
  • Le plus important est la clé "build", celle-ci indique que dans .docker/php-fpm se trouve un Dockerfile
    Sa première ligne indique l'image utilisée php:8.2-fpm-alpine
    Le reste est une suite de commande à réaliser telle qu'elles seraient executéés sur un terminal.
    Nous avons entre autres : \
    • L'installation de différentes extensions PHP (xsl, soap, zip, pdo..)
    • L'installation de Composer
    • L'installation de Oh My Zsh et de son thème, pour plus de style lors des accès au container