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 2 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.frankenphp.yml est tel :

services:
myphp:
container_name: dev_myeureka_php
restart: always
build: .docker/frankenphp
ports:
- 80:80 # HTTP
- 443:443 # HTTPS
- 443:443/udp # HTTP/3
volumes:
- ./:/app
- /samba:/samba
- caddy_data:/data
- caddy_config:/config
environment:
ENVIRONMENT: FRANKEN_PHP
SERVER_NAME: ${SERVER_NAME:-localhost}, php:80
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16}
TRUSTED_HOSTS: ^${SERVER_NAME:-example\.com|localhost}|php$$
# Run "composer require symfony/orm-pack" to install and configure Doctrine ORM
# The two next lines can be removed after initial installation
SYMFONY_VERSION: ${SYMFONY_VERSION:-}
tty: true
links:
- mydatabase
extra_hosts:
- host.docker.internal:host-gateway

volumes:
caddy_data:
caddy_config:

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.

FrankenPHP

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 4 volumes de la machine hôte:
    • 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 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 fichier ./caddy_data en tant que /data dans le container. Il s'agit d'un dossier pour le bon fonctionnement de Caddy.
    • Le fichier ./caddy_config en tant que /config dans le container. Il s'agit d'un dossier pour le bon fonctionnement de Caddy.
  • Le plus important est la clé "build", celle-ci indique que dans .docker/frankenphp se trouve un Dockerfile
    Sa première ligne indique l'image utilisée dunglas/frankenphp:1.4-php8.2-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 d'outils commpe NPM, Git..
    • 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