تحذير! أبلغ القرون وفريق الأشعة تحت الحمراء بالتغييرات التي أنت على وشك إجرائها في هذا المستودع. يؤثر كل تغيير على المشاريع النهائية، وتعتمد تصميماتنا عليه.
بيئة دروبال القائمة على 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
تابع الآن بخطوة اختيارية ولكن يوصى بها بشدة. 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.
يمكنك العثور على مزيد من المعلومات حول معلمات 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
وافتح واجهة مستخدم مسؤول MailHog في متصفحك، على سبيل المثال، http://localhost:32772
.