Avertissement! Informez les pods et l'équipe infra des modifications que vous vous apprêtez à apporter dans ce référentiel. Chaque changement affecte les projets en aval et nos builds en dépendent.
Environnement Drupal basé sur Docker pour le développement et les tests locaux.
Frameworks de test pris en charge : PHPUnit, Behat
Il est recommandé de l'utiliser en combinaison avec le plugin pronovix/drupal-qa
Composer.
Remarque : extrayez toujours une balise ou un commit spécifique de ce référentiel ! Il pourrait y avoir des changements radicaux !
$ git clone https://github.com/Pronovix/docker-drupal-dev.git drupal-dev
$ mkdir build ;
$ ln -s drupal-dev/docker-compose.yml
$ ln -s drupal-dev/Dockerfile
$ printf " COMPOSE_PROJECT_NAME=[YOUR_PROJECT_NAME]n#You can find examples for available customization in the drupal-dev/examples/.env file.n " > .env && source .env
$ docker compose up -d --build
Remplacez [YOUR_PROJECT_NAME] par une chaîne contenant uniquement des lettres minuscules et des tirets. Il ne doit contenir ni espaces ni caractères spéciaux. Ex. : mon_awesome_project
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
Continuez maintenant avec une étape facultative mais fortement recommandée. Fichiers Symlink settings*.php
et development.services.yml.dist
du dossier drupal
vers build/web/sites
. Fichiers Symlink settings*.php
et development.services.yml.dist
du dossier drupal
vers build/web/sites
. Les liens symboliques doivent être relatifs au chemin de destination de manière à pouvoir également y accéder à l'intérieur du conteneur php
.
$ ln -s ../../../../drupal-dev/drupal/settings.php build/web/sites/default/settings.php
$ ln -s ../../../../drupal-dev/drupal/settings.shared.php build/web/sites/default/settings.shared.php
$ ln -s ../../../../drupal-dev/drupal/settings.testing.php build/web/sites/default/settings.testing.php
$ ln -s ../../../drupal-dev/drupal/development.services.yml.dist build/web/sites/development.services.yml.dist
(Si le fichier settings.php
existe déjà, supprimez-le ou renommez-le settings.local.php
.)
Si vous avez réussi à créer un lien symbolique entre ces fichiers, votre environnement est prêt à être utilisé. Vous pouvez installer le site sur l'interface utilisateur ou avec Drush.
Vous pouvez installer le site avec le profil d'installation minimal comme celui-ci avec Drush : docker compose exec php drush si minimal -y
. Si le dossier build/config
n'existe pas, vous devez ajouter --db-url=$SIMPLETEST_DB
à la fin de la commande car Drush ne lira pas la configuration à partir du lien symbolique settings.php. (C'est probablement un bug.)
Vérifiez le port actuel du conteneur de serveur Web en cours d'exécution avec docker compose ps webserver
:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
Remarque : Le port exposé change à chaque fois que le conteneur webserver
redémarre.
Si vous générez une URL de connexion avec Drush, remplacez le webserver
dans l'URL de connexion par localhost:[PORT]
, comme : http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login.
Dans cette configuration, tout est préconfiguré pour exécuter n'importe quel test PHPUnit de Drupal 8, y compris, mais sans s'y limiter, les tests Javascript PHPUnit. Si PHPUnit est installé en tant que dépendance Composer dans votre projet, alors exécuter des tests PHPUnit est simple, voici quelques exemples :
$ docker compose run --rm php ./vendor/bin/phpunit -c web/core -v --debug --printer ' DrupalTestsListenersHtmlOutputPrinter ' web/core/modules/node # Run all tests of the node module.
$ docker compose run --rm php ./vendor/bin/phpunit -c web/core -v --debug --printer ' DrupalTestsListenersHtmlOutputPrinter ' web/core/modules/node/tests/src/Functional/NodeCreationTest.php # Run one specific test from the node module.
$ docker compose run --rm php ./vendor/bin/phpunit -c web/core -v --debug --printer ' DrupalTestsListenersHtmlOutputPrinter ' --testsuite kernel # Run all kernel tests.
Vous pouvez trouver plus d'informations sur les paramètres CLI PHPUnit disponibles et les options de configuration dans la documentation officielle de PHPUnit.
docker-compose.yml
contient des paramètres Behat par défaut raisonnables qui permettent d'exécuter en douceur des tests Behat dans le conteneur PHP. Vérifiez la variable d'environnement BEHAT_PARAMS
dans la définition du conteneur php
.
behat.yml.dist
dans le dossier build
avec cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
. Vous pouvez également ajouter votre behat.yml
avec des remplacements à ce répertoire si vous en avez un.drupal-dev/examples/behat/login.feature
dans build/behat
avec mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
.build/behat
: docker compose exec php php vendor/bin/behat
.Vous pouvez trouver plus d'informations sur les paramètres Behat CLI et les options de configuration disponibles dans la documentation officielle des extensions Behat et Drupal Behat.
Il est recommandé d'installer le package pronovix/drupal-qa
avec Composer car il contient de nombreuses extensions Behat utiles qui pourraient vous faciliter la vie lorsque vous testez un site.
MailHog capture tous les e-mails sortants de cet environnement de développement. (Sauf si vous remplacez la configuration par défaut du système de messagerie dans Drupal.)
Si vous souhaitez consulter tous les e-mails envoyés, vérifiez le port local du conteneur mailhog
avec docker compose ps mailhog
:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
et ouvrez l'interface utilisateur d'administration MailHog dans votre navigateur, par exemple http://localhost:32772
.