Aviso! Informe os pods e a equipe de infra-estrutura sobre as alterações que você está prestes a fazer neste repositório. Cada mudança afeta projetos posteriores e nossas construções dependem disso.
Ambiente Drupal baseado em Docker para desenvolvimento e testes locais.
Estruturas de teste suportadas: PHPUnit, Behat
Recomenda-se usar em combinação com o plugin pronovix/drupal-qa
Composer.
Aviso: Sempre extraia uma tag específica ou faça commit deste repositório! Pode haver mudanças significativas!
$ 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
Substitua [YOUR_PROJECT_NAME] por uma string que contenha apenas letras minúsculas e travessões. Não deve conter espaços ou caracteres especiais. Ex.: meu_projeto_incrível
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
Agora continue com uma etapa opcional , mas altamente recomendada. Symlink settings*.php
arquivos e development.services.yml.dist
da pasta drupal
para build/web/sites
. Symlink settings*.php
arquivos e development.services.yml.dist
da pasta drupal
para build/web/sites
. Os links simbólicos devem ser relativos ao caminho de destino de forma que também possam ser acessados dentro do contêiner 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
(Se o arquivo settings.php
já existir, exclua-o ou renomeie-o para settings.local.php
.)
Se você vinculou esses arquivos com sucesso, seu ambiente estará pronto para ser usado. Você pode instalar o site na UI ou com Drush.
Você pode instalar o site com o perfil de instalação mínimo como este com Drush: docker compose exec php drush si minimal -y
. Se a pasta build/config
não existir, você deverá adicionar --db-url=$SIMPLETEST_DB
ao final do comando porque o Drush não irá ler a configuração do settings.php com link simbólico. (Isso provavelmente é um bug.)
Verifique a porta atual do contêiner do servidor web em execução com docker compose ps webserver
:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
Nota: A porta exposta muda sempre que o contêiner webserver
é reiniciado.
Se você gerar uma URL de login com Drush, substitua o webserver
na URL de login por localhost:[PORT]
, como: http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login.
Nesta configuração tudo está pré-configurado para executar quaisquer testes PHPUnit do Drupal 8, incluídos, mas não limitados a testes PHPUnit Javascript. Se você tiver o PHPUnit instalado como uma dependência do Composer em seu projeto, então executar testes do PHPUnit é simples, aqui estão alguns exemplos:
$ 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.
Você pode encontrar mais informações sobre os parâmetros CLI do PHPUnit disponíveis e opções de configuração na documentação oficial do PHPUnit.
docker-compose.yml
contém algumas configurações padrão do Behat que tornam possível executar testes do Behat dentro do contêiner PHP sem problemas. Verifique a variável de ambiente BEHAT_PARAMS
na definição do contêiner php
.
behat.yml.dist
para a pasta build
com cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
. Você também pode adicionar seu behat.yml
com substituições a este diretório, se tiver um.drupal-dev/examples/behat/login.feature
para build/behat
com mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
.build/behat
: docker compose exec php php vendor/bin/behat
.Você pode encontrar mais informações sobre os parâmetros disponíveis da CLI do Behat e opções de configuração na documentação oficial da extensão Behat e Drupal Behat.
É recomendado instalar o pacote pronovix/drupal-qa
com o Composer porque ele vem com um monte de extensões úteis do Behat que podem facilitar sua vida quando você estiver testando um site.
MailHog captura todos os emails enviados deste ambiente de desenvolvimento. (A menos que você substitua a configuração padrão do sistema de correio no Drupal.)
Se você quiser revisar todos os e-mails enviados, verifique a porta local do contêiner mailhog
com docker compose ps mailhog
:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
e abra a interface de administração do MailHog em seu navegador, por exemplo, http://localhost:32772
.