Warnung! Informieren Sie die Pods und das Infra-Team über die Änderungen, die Sie an diesem Repository vornehmen möchten. Jede Änderung wirkt sich auf nachgelagerte Projekte aus und unsere Builds hängen davon ab.
Docker-basierte Drupal-Umgebung für lokale Entwicklung und Tests.
Unterstützte Test-Frameworks: PHPUnit, Behat
Es wird empfohlen, es in Kombination mit dem Composer-Plugin pronovix/drupal-qa
zu verwenden.
Hinweis: Ziehen Sie immer ein bestimmtes Tag oder Commit aus diesem Repository! Es kann zu Breaking Changes kommen!
$ 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
Ersetzen Sie [YOUR_PROJECT_NAME] durch eine Zeichenfolge, die nur Kleinbuchstaben und Bindestriche enthält. Es darf keine Leerzeichen oder Sonderzeichen enthalten. Bsp.: my_awesome_project
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
Fahren Sie nun mit einem optionalen , aber sehr empfehlenswerten Schritt fort. Symlink settings*.php
Dateien und development.services.yml.dist
aus dem drupal
Ordner zu build/web/sites
. Symlink settings*.php
Dateien und development.services.yml.dist
aus dem drupal
Ordner zu build/web/sites
. Symlinks müssen so relativ zum Zielpfad sein, dass auch innerhalb des php
Containers auf sie zugegriffen werden kann.
$ 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
(Wenn die Datei settings.php
bereits vorhanden ist, löschen Sie sie oder benennen Sie sie in settings.local.php
um.)
Wenn Sie diese Dateien erfolgreich verknüpft haben, ist Ihre Umgebung einsatzbereit. Sie können die Site auf der Benutzeroberfläche oder mit Drush installieren.
Sie können die Site mit dem Minimalinstallationsprofil wie folgt mit Drush installieren: docker compose exec php drush si minimal -y
. Wenn der Ordner build/config
nicht vorhanden ist, müssen Sie --db-url=$SIMPLETEST_DB
am Ende des Befehls hinzufügen, da Drush die Konfiguration nicht aus der symbolisch verknüpften Datei „settings.php“ liest. (Dies ist wahrscheinlich ein Fehler.)
Überprüfen Sie den aktuellen Port des laufenden Webserver-Containers mit docker compose ps webserver
:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
Hinweis: Der verfügbar gemachte Port ändert sich jedes Mal, wenn der webserver
Container neu gestartet wird.
Wenn Sie mit Drush eine Anmelde-URL generieren, ersetzen Sie den webserver
in der Anmelde-URL durch localhost:[PORT]
, etwa: http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login.
In dieser Konfiguration ist alles für die Ausführung aller PHPUnit-Tests von Drupal 8 vorkonfiguriert, einschließlich, aber nicht beschränkt auf PHPUnit-Javascript-Tests. Wenn Sie PHPUnit als Composer-Abhängigkeit in Ihrem Projekt installiert haben, ist die Ausführung von PHPUnit-Tests einfach. Hier einige Beispiele:
$ 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.
Weitere Informationen zu den verfügbaren PHPUnit-CLI-Parametern und Konfigurationsoptionen finden Sie in der offiziellen PHPUnit-Dokumentation.
docker-compose.yml
enthält einige vernünftige Standard-Behat-Einstellungen, die es ermöglichen, Behat-Tests reibungslos im PHP-Container auszuführen. Überprüfen Sie die Umgebungsvariable BEHAT_PARAMS
in der Definition des php
Containers.
behat.yml.dist
mit cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
in den build
Ordner. Sie können auch Ihre behat.yml
mit Überschreibungen zu diesem Verzeichnis hinzufügen, falls Sie eines haben.drupal-dev/examples/behat/login.feature
nach build/behat
mit mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
.build/behat
aus: docker compose exec php php vendor/bin/behat
.Weitere Informationen zu den verfügbaren Behat-CLI-Parametern und Konfigurationsoptionen finden Sie in der offiziellen Dokumentation zur Behat- und Drupal-Behat-Erweiterung.
Es wird empfohlen, das Paket pronovix/drupal-qa
mit Composer zu installieren, da es eine Reihe nützlicher Behat-Erweiterungen enthält, die Ihnen das Leben beim Testen einer Site erleichtern könnten.
MailHog erfasst alle ausgehenden E-Mails aus dieser Entwicklungsumgebung. (Es sei denn, Sie überschreiben die Standard-Mailsystemkonfiguration in Drupal.)
Wenn Sie alle gesendeten E-Mails überprüfen möchten, überprüfen Sie den lokalen Port des mailhog
Containers mit docker compose ps mailhog
:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
und öffnen Sie die MailHog-Administrator-Benutzeroberfläche in Ihrem Browser, z. B. http://localhost:32772
.