build(docker): update PHP extensions configuration See merge request ldc-web/projets/ldc-web-images-docker!10 |
||
|---|---|---|
| InfraV2 | ||
| PHP7.3 | ||
| PHP8.3 | ||
| PHP8.5 | ||
| SimpleSAMLPHP | ||
| .gitlab-ci.yml | ||
| README.md | ||
UWIL Docker images
Table des matières
- Depuis environnement de travail LDC
- Comparatif des images 8.5
- Explication des Dockerfiles pour images 8.5
Depuis environnement de travail LDC
Voici quelques commandes:
- pour build une image:
docker build [--no-cache] [--build-arg http_proxy=http://proxy-app.lesidc.com:8080] -t <nom_image> ./PHPX.X/DEV/
- pour tester l'image build :
docker run --rm <nom_image>:<version>
- pour tester les outils d'une image build (se positionner à la racine) :
bash PHPX.X/PROD/tests.sh <nom_image>
Comparatif des images 8.5
Voici deux tableaux résumant le gain du temps de build ainsi que la réduction du poids par rapport aux anciennes images utilisées :
| Image | Ancien build | Nouveau build | Gain build |
|---|---|---|---|
| DEV | ~235s | ~159s | -76s (-32%) |
| PROD | ~212s | ~142s | -70s (-33%) |
| QA | ~224s | ~125s | -99s (-44%) |
| Image | Ancien poids | Nouveau poids | Réduction poids |
|---|---|---|---|
| DEV | 1.44 GB | 457 MB | -983 MB (-68%) |
| PROD | 1.19 GB | 212 MB | -978 MB (-82%) |
| QA | 1.27 GB | 270 MB | -1.00 GB (-79%) |
Explication des Dockerfiles pour images 8.5
Les images sont construites selon une approche multi-stage, afin de séparer les éléments nécessaires à la construction de l'image de ceux réellement utiles à son exécution.
Cette séparation permet de :
- réduire la taille de l'image finale,
- éviter d'embarquer les compilateurs et outils de compilation en production,
- accélérer les builds grâce à une meilleure séparation des étapes,
- conserver une image d'exécution plus propre et plus légère.
Voici un exemple concret résultant de cette approche grâce au comparatif des images 8.5.
Stage n°1: builder
Le premier stage est dédié à la construction de l'environnement.
Il contient l'ensemble des dépendances et outils nécessaires pour compiler les composants qui ne sont pas directement disponibles dans l'image de base.
On y retrouve donc certaines actions :
- installation des dépendances nécessaires à la compilation,
- compilation et installation des composants complémentaires,
- installation des outils nécessaires au projet.
Stage n°2: base
Le second stage constitue la base de l'image finale. Il repart d'une image PHP minimale et n'embarque pas les outils de compilation du stage précédent.
Les éléments produits lors du build sont récupérés depuis le premier stage et copiés dans cette image, on bénéficie ainsi des composants compilés sans conserver l'environnement ayant servi à les compiler.
On y retrouve donc certaines actions :
- installation des dépendances nécessaires au runtime,
- configuration de PHP,
- configuration du serveur web,
- configuration des différents services et outils nécessaires,
- définition des permissions,
- etc…