15 février 2018
Présentation des stacks Docker
Cet article présente la stack que j’ai créée pour mon travail quotidien autour de Symfony et Wordpress.
Mes objectifs
Docker était l’une de ces choses dans lesquelles je voulais me lancer depuis un moment, sans forcément avoir le temps de m’y plonger. J’ai finalement pris le train en marche et, même si je reste plus proche du padawan que du guru, j’ai pu construire 2 stacks que je présente ci-dessous : une pour Symfony, et une autre pour Wordpress.
Les deux sont de nouveaux boilerplates utilisés pour tous les nouveaux projets, qu’ils soient @LCH ou personnels.
Stack Symfony
Elle permet d’installer un environnement de travail complet pour Symfony 2.X ou 3.X. Symfony Flex (utilisable à partir de 3.4+) n’est pas inclus ici, nous avons créé une branche spécifique pour la 4.X. Vous y trouvez 4 containers :
- mysql
- php
- apache
- phpmyadmin
Voici les spécificités importantes.
Variables d’environnement
Toutes les variables nécessaires au docker-compose.yml sont stockées dans un fichier .env (documentation Docker ici).
Ce fichier .env est aussi défini à l’intérieur des containers pour exposer les variables d’environnement nécessaires. Pour cela, il suffit de passer le fichier .env via l’option env_file (documentation ici).
Cela donne la possibilité intéressante de les utiliser dans les fichiers ajoutés au container (comme le app.conf qui définit le vhost de l’application en utilisant $FPM_HOST). Vous pouvez faire la même chose directement dans le Dockerfile.
Note importante : pour cela, il faut simplement les déclarer explicitement avec le mot-clé ARG (exemple).
Volumes
J’y crée 3 volumes :
Restez à l’écoute pour un article dédié aux volumes.
Start bash
Pour faciliter le démarrage, j’ai créé un fichier bash qui exécute les actions suivantes :
- Création des dossiers des volumes (s’ils n’existent pas déjà)
- Téléchargement et installation du Symfony installer (si la commande
symfonyn’est pas encore enregistrée) - Installation de Symfony en utilisant le numéro de version spécifié dans le fichier
.env - Copie du fichier
.envpour permettre à l’application Symfony d’accéder à ses variables (décrit ici et ici) - Copie du fichier
parameters.yml.distet substitution des paramètres avec la commandeenvsubst. Note : j’ai choisi de ne pas utiliser le DotEnv component afin de garantir une rétro-compatibilité totale avec 2.X et 3.4-. - Installation de
docker-composes’il n’est pas déjà présent et enregistré sous le nomdocker-compose - Mise en route des containers (avec build)
- Suppression du fichier
parameters.ymlpour forcer sa régénération (j’ai rencontré ce cas lors de mes tests, où uncomposer updatene rafraîchit pas le fichierparameters.yml) composer update
Stack Wordpress
La stack Wordpress fait la même chose qu’au-dessus, avec en plus WP-CLI. Je l’ai mise en place en utilisant le fichier de configuration YAML pour exécuter les commandes à vide, sans arguments (puisqu’ils sont spécifiés dans le fichier).
Les actions intéressantes du script bash : téléchargement de la dernière version du core, installation, configuration, création du premier utilisateur, suppression de Hello Dolly (RIP) et des pages/articles de test, configuration des permaliens en %postname%.
Enfin, le script installe et configure un thème Sage prêt à l’emploi (version 8.5.3, avec gulp/bower/npm).
Et ensuite ?
Ce n’est qu’un début. Plusieurs fonctionnalités notables seront ajoutées par la suite.
Pour les deux
- Elastic stack integration
- Test addition
Pour la stack Symfony
- Continue Symfony 4 branch
- Add Webpack Encore for assets management
- Add Angular for front boilerplate
Pour la stack Wordpress
- ACF Pro setup