警告!通知 Pod 和基礎架構團隊您要在此儲存庫中進行的變更。每一個變化都會影響下游項目,我們的構建依賴它。
基於 Docker 的 Drupal 環境用於本地開發和測試。
支援的測試框架: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] 替換為僅包含小寫字母和破折號的字串。它不得包含空格或任何特殊字元。例如:my_awesome_project
$ 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
。)
如果您成功地對這些文件進行了符號鏈接,那麼您的環境就可以使用了。您可以在 UI 上或使用 Drush 安裝網站。
您可以使用 Drush 的最小安裝設定檔來安裝該網站: docker compose exec php drush si minimal -y
。如果build/config
資料夾不存在,您必須將--db-url=$SIMPLETEST_DB
加入命令末尾,因為 Drush 不會從符號連結的 settings.php 中讀取配置。 (這可能是個錯誤。)
使用docker compose ps webserver
檢查正在執行的 Webserver 容器的目前連接埠:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
注意:每次webserver
容器重新啟動時,暴露的連接埠都會變更。
如果您使用 Drush 產生登入 URL,則將登入 URL 中webserver
替換為localhost:[PORT]
,例如:http://localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KpCHIpi8Sx/wi8Sw
在此組態中,所有內容都已預先設定為執行任何 Drupal 8 的 PHPUnit 測試,包括但不限於 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.
您可以在官方 PHPUnit 文件中找到有關可用 PHPUnit CLI 參數和設定選項的更多資訊。
docker-compose.yml
包含一些合理的預設 Behat 設置,可以在 PHP 容器內順利執行 Behat 測試。檢查php
容器定義中的BEHAT_PARAMS
環境變數。
cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
將behat.yml.dist
檔案複製到build
資料夾。如果您有的話,您也可以將帶有覆蓋的behat.yml
新增至此目錄。mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
drupal-dev/examples/behat/login.feature
build/behat
將 drupal-dev/examples/behat/login.feature 複製到 build/behat 。build/behat
資料夾執行所有 Behat 測試: docker compose exec php php vendor/bin/behat
。您可以在官方 Behat 和 Drupal Behat 擴充文件中找到有關可用 Behat CLI 參數和設定選項的更多資訊。
建議使用 Composer 安裝pronovix/drupal-qa
軟體包,因為它附帶了一堆有用的 Behat 擴展,可以讓您在測試網站時變得更輕鬆。
MailHog 擷取從此開發環境中發出的所有電子郵件。 (除非您覆蓋 Drupal 中的預設郵件系統配置。)
如果您想查看所有已發送的電子郵件,請使用docker compose ps mailhog
檢查mailhog
容器的本機連接埠:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
並在瀏覽器中開啟 MailHog 管理 UI,例如http://localhost:32772
。