Drupal - image docker PHP-FPM de base
Introduction
Ce dépôt permet de créer et de pousser l'image docker 'PHP-FPM' de base pour les sites web de la Ville de Genève.
Il se base sur une image php avec un tag identique aux versions officielles du type #.#-fpm-alpine#.#, #.#.#-fpm-alpine#.#, #.#-fpm-alpine ou #.#.#-fpm-alpine en y ajoutant les paquets et librairies nécessaires afin de pouvoir compiler une image php type utilisée par les sites Web de la Ville.
Il crée également à partir de l'image de base une image pour les tests unitaires en ajoutant xdebug à l'image de base.
CI/CD
La CI se déclenche uniquement après avoir tagué une version dans gitlab qui reprend le type d'image type_image (p.ex drupal_php, vdg_php, etc...) et le tag de l'image officielle #.#-fpm-alpine#.# en y ajoutant un numéro de version sous la forme type_image%#.#-fpm-alpine#.#@## ou un commentaire type_image%#.#-fpm-alpine#.#@commetaire-explicatif
Le build des images de base et de tests est lancé manuellement depuis le menu : Pipelines dans gitlab.
Les images sont ensuite déposées dans le dépôt de la Ville de Genève.
Si une image avec le même tag existe déjà dans le dépôt, elle est remplacée par la nouvelle. Cela permet de mettre à jour les versions mineures de PHP.
Structure
Chaque version liée à une image officielle #.#-fpm-alpine#.# doit être associée à un sous dossier correspondant au type d'image type_image suivi d'un sous dossier #.#-fpm-alpine#.# contenant les fichiers Dockerfile, Dockerfile-tests, php.ini et xdebug.ini, par exemple :
src
├── drupal_php
└── 8.1-fpm-alpine3.18
├── Dockerfile
├── Dockerfile-tests
├── php.ini
└── xdebug.ini
Pour créer une nouvelle image, il est tout à fait conseillé de partir d'une copie d'un dossier existant et de l'adapter pour préparer les nouvelles images de base et de tests pour les sites Web.
Une fois l'image validée localement, il suffit de la commiter dans gitlab et d'ajouter un nouveau tag pour lancer la CI.
Environnement local
Localement, il est possible de récupérer les images à partir du dépôt VdG ou de la reconstruire à des fins de tests en utilisant le script docker.sh.
Pour initialiser l'environnement local, cloner le projet et rendre le script docker.sh exécutable :
chmod +x docker.sh
Créer ensuite un fichier .env à partir du fichier .env.dist :
cp .env.dist .env
chmod 600 .env
Récupérer dans le KeePass les informations de connexion à la registry Nexus et renseigner la variable REGISTRY_PASSWORD dans le fichier .env.
Commandes locales
Pour télécharger localement l'image de base type_image avec le tag #.#-fpm-alpine#.# depuis le dépôt VdG, il faut lancer la commande :
./docker.sh -n type_image -t #.#-fpm-alpine#.# pull
Pour télécharger localement l'image de tests avec le tag #.#-fpm-alpine#.#-tests depuis le dépôt VdG, il faut lancer la commande :
./docker.sh -n type_image -t #.#-fpm-alpine#.# pull-tests
Pour reconstuire localement les 2 images type_image associées au tag #.#-fpm-alpine#.#, il faut lancer la commande :
./docker.sh -n type_image -t #.#-fpm-alpine#.# build
Pour se connecter dans l'image de base nouvellement téléchargée ou reconstruite :
./docker.sh -n type_image -t #.#-fpm-alpine#.# bash
Pour se connecter dans l'image de tests nouvellement téléchargée ou reconstruite :
./docker.sh -n type_image -t #.#-fpm-alpine#.# bash-tests
L'aide en ligne de la commande docker.sh et la liste complète des options peut être affichée avec la commande :
./docker.sh help
Notes :
- Si le type de l'image et/ou le tag n'est pas renseigné, il sera demandé avant l'exécution de la commande souhaitée.
- Le bon format du type et du tag sont également validés par le script et la CI.