Предупреждение! Сообщите модулям и инфраструктурной команде об изменениях, которые вы собираетесь внести в этот репозиторий. Каждое изменение влияет на последующие проекты, и от этого зависят наши сборки.
Среда Drupal на базе Docker для локальной разработки и тестирования.
Поддерживаемые среды тестирования: PHPUnit, Behat.
Рекомендуется использовать в сочетании с плагином pronovix/drupal-qa
Composer.
Примечание. Всегда извлекайте определенный тег или фиксируйте из этого репозитория! Могут быть критические изменения!
$ 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
Замените [YOUR_PROJECT_NAME] строкой, содержащей только строчные буквы и тире. Он не должен содержать пробелов и специальных символов. Пример: мой_потрясающий_проект
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
Теперь перейдите к необязательному , но настоятельно рекомендуемому шагу. Файлы settings*.php
и development.services.yml.dist
из папки drupal
в build/web/sites
. Файлы settings*.php
и development.services.yml.dist
из папки drupal
в build/web/sites
. Символические ссылки должны быть относительно пути назначения таким образом, чтобы к ним можно было получить доступ и внутри контейнера 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
(Если файл settings.php
уже существует, удалите его или переименуйте в settings.local.php
.)
Если вы успешно создали символические ссылки на эти файлы, ваша среда готова к использованию. Вы можете установить сайт через пользовательский интерфейс или с помощью Drush.
Вы можете установить сайт с минимальным профилем установки с помощью Drush: docker compose exec php drush si minimal -y
. Если папка build/config
не существует, вам необходимо добавить --db-url=$SIMPLETEST_DB
в конец команды, потому что Drush не будет читать конфигурацию из файла settings.php, связанного с символической ссылкой. (Возможно, это ошибка.)
Проверьте текущий порт работающего контейнера веб-сервера с помощью docker compose ps webserver
:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
Примечание. Открытый порт меняется каждый раз при перезапуске контейнера webserver
.
Если вы создаете URL-адрес входа с помощью Drush, замените webserver
в URL-адресе входа на localhost:[PORT]
, например: http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login.
В этой конфигурации все предварительно настроено для запуска любых тестов PHPUnit Drupal 8, включая, помимо прочего, тесты PHPUnit Javascript. Если в вашем проекте установлен PHPUnit как зависимость Composer, запустить тесты PHPUnit очень просто, вот несколько примеров:
$ 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.
Дополнительную информацию о доступных параметрах CLI PHPUnit и параметрах конфигурации можно найти в официальной документации PHPUnit.
docker-compose.yml
содержит некоторые разумные настройки Behat по умолчанию, которые позволяют плавно запускать тесты Behat внутри контейнера PHP. Проверьте переменную среды BEHAT_PARAMS
в определении контейнера php
.
behat.yml.dist
в папку build
с помощью cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
. Вы также можете добавить в этот каталог свой behat.yml
с переопределениями, если он у вас есть.drupal-dev/examples/behat/login.feature
в build/behat
с помощью mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
.build/behat
: docker compose exec php php vendor/bin/behat
.Дополнительную информацию о доступных параметрах и параметрах конфигурации Behat CLI можно найти в официальной документации по расширениям Behat и Drupal Behat.
Рекомендуется установить пакет pronovix/drupal-qa
вместе с Composer, поскольку он содержит множество полезных расширений Behat, которые могут облегчить вашу жизнь при тестировании сайта.
MailHog перехватывает все исходящие электронные письма из этой среды разработки. (Если вы не переопределите конфигурацию почтовой системы по умолчанию в Drupal.)
Если вы хотите просмотреть все отправленные электронные письма, проверьте локальный порт контейнера mailhog
с помощью docker compose ps mailhog
:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
и откройте интерфейс администратора MailHog в своем браузере, например http://localhost:32772
.