คำเตือน! แจ้งพ็อดและทีมงานอินฟาเรดเกี่ยวกับการเปลี่ยนแปลงที่คุณกำลังจะทำในพื้นที่เก็บข้อมูลนี้ การเปลี่ยนแปลงทุกอย่างส่งผลต่อโครงการปลายน้ำ และงานสร้างของเราก็ขึ้นอยู่กับมันด้วย
สภาพแวดล้อม 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] ด้วยสตริงที่มีเฉพาะตัวอักษรพิมพ์เล็กและขีดกลางเท่านั้น ต้องไม่มีการเว้นวรรคหรืออักขระพิเศษใดๆ เช่น: my_awesome_project
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
ตอนนี้ดำเนินการต่อด้วยขั้นตอน ที่ไม่บังคับ แต่ขอแนะนำเป็นอย่างยิ่ง ไฟล์ Symlink settings*.php
และ development.services.yml.dist
จากโฟลเดอร์ drupal
ไปยัง build/web/sites
ไฟล์ Symlink settings*.php
และ development.services.yml.dist
จากโฟลเดอร์ drupal
ไปยัง build/web/sites
Symlinks จะต้องสัมพันธ์กับเส้นทางปลายทางในลักษณะที่สามารถเข้าถึงได้ภายในคอนเทนเนอร์ 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 จะไม่อ่านการกำหนดค่าจาก symlinked 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.
คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ PHPUnit CLI และตัวเลือกการกำหนดค่าที่มีอยู่ในเอกสาร 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
และเปิด UI ผู้ดูแลระบบ MailHog ในเบราว์เซอร์ของคุณ เช่น http://localhost:32772