경고! 이 리포지토리에서 수행할 변경 사항에 대해 포드와 인프라 팀에 알립니다. 모든 변경 사항은 다운스트림 프로젝트에 영향을 미치며 우리의 빌드는 이에 의존합니다.
로컬 개발 및 테스트를 위한 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
이제 선택 사항 이지만 적극 권장되는 단계를 계속 진행하세요. drupal
폴더의 Symlink settings*.php
파일 및 development.services.yml.dist
build/web/sites
로 복사합니다. drupal
폴더의 Symlink settings*.php
파일 및 development.services.yml.dist
build/web/sites
로 가져옵니다. Symlink는 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
사용하여 실행 중인 웹 서버 컨테이너의 현재 포트를 확인합니다.
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
참고: 노출된 포트는 webserver
컨테이너가 다시 시작될 때마다 변경됩니다.
Drush로 로그인 URL을 생성하는 경우 로그인 URL의 webserver
http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login과 같이 localhost:[PORT]
로 바꾸세요.
이 구성에서는 PHPUnit Javascript 테스트를 포함하되 이에 국한되지 않는 모든 Drupal 8의 PHPUnit 테스트를 실행하기 위해 모든 것이 사전 구성되어 있습니다. 프로젝트에 Composer 종속성으로 PHPUnit을 설치한 경우 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
추가할 수도 있습니다.drupal-dev/examples/behat/login.feature
mkdir build build/behat
mkdir build/behat && cp 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
패키지는 사이트를 테스트할 때 작업을 더 쉽게 만들어 줄 수 있는 유용한 Behat 확장 기능을 제공하므로 Composer와 함께 설치하는 것이 좋습니다.
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
.