警告!このリポジトリに加えようとしている変更についてポッドとインフラ チームに通知します。あらゆる変更は下流のプロジェクトに影響し、私たちのビルドはそれに依存します。
ローカル開発およびテスト用の 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
フォルダーが存在しない場合は、Drush がシンボリックリンクされた settings.php から構成を読み取らないため、コマンドの最後に--db-url=$SIMPLETEST_DB
を追加する必要があります。 (これはおそらくバグです。)
docker compose ps webserver
を使用して、実行中の Web サーバー コンテナの現在のポートを確認します。
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_3KCppiCHI8SxKZ158Lw/login)。
この構成では、PHPUnit Javascript テストを含むがこれに限定されない、Drupal 8 の PHPUnit テストを実行するためにすべてが事前構成されています。 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
PHP コンテナー内で Behat テストをスムーズに実行できるようにする適切なデフォルトの 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
使用して、 drupal-dev/examples/behat/login.feature をbuild/behat
にコピーします。build/behat
フォルダーからすべての Behat テストを実行します: docker compose exec php php vendor/bin/behat
。利用可能な Behat CLI パラメーターと構成オプションの詳細については、Behat および Drupal Behat 拡張機能の公式ドキュメントを参照してください。
pronovix/drupal-qa
パッケージを Composer と一緒にインストールすることをお勧めします。このパッケージには、サイトのテストを容易にする便利な 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
を開きます。