¡Advertencia! Informe a los pods y al equipo de infraestructura sobre los cambios que está a punto de realizar en este repositorio. Cada cambio afecta a los proyectos posteriores y nuestras construcciones dependen de ello.
Entorno Drupal basado en Docker para desarrollo y pruebas locales.
Marcos de prueba compatibles: PHPUnit, Behat
Se recomienda utilizarlo en combinación con el complemento pronovix/drupal-qa
Composer.
Aviso: ¡Siempre extraiga una etiqueta específica o confirme desde este repositorio! ¡Podría haber cambios importantes!
$ 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
Reemplace [YOUR_PROJECT_NAME] con una cadena que solo contenga letras minúsculas y guiones. No debe contener espacios ni caracteres especiales. Ej.: mi_proyecto_increíble
$ docker compose exec php composer create-project drupal-composer/drupal-project:8.x-dev ../build -n
Ahora continúa con un paso opcional , pero muy recomendado. Archivos Symlink settings*.php
y development.services.yml.dist
desde la carpeta drupal
a build/web/sites
. Archivos Symlink settings*.php
y development.services.yml.dist
desde la carpeta drupal
a build/web/sites
. Los enlaces simbólicos deben ser relativos a la ruta de destino de manera que también se pueda acceder a ellos dentro del contenedor 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
(Si el archivo settings.php
ya existe, elimínelo o cámbiele el nombre a settings.local.php
).
Si vinculó exitosamente estos archivos, entonces su entorno estará listo para ser utilizado. Puede instalar el sitio en la interfaz de usuario o con Drush.
Puede instalar el sitio con el perfil de instalación mínimo como este con Drush: docker compose exec php drush si minimal -y
. Si la carpeta build/config
no existe, debe agregar --db-url=$SIMPLETEST_DB
al final del comando porque Drush no leerá la configuración desde el archivo settings.php vinculado simbólicamente. (Esto probablemente sea un error).
Verifique el puerto actual del contenedor del servidor web en ejecución con docker compose ps webserver
:
Name Command State Ports
--------------------------------------------------------------------------------------------------
my_module_webserver /docker-entrypoint.sh sudo ... Up 0.0.0.0:32794- > 80/tcp
Nota: El puerto expuesto cambia cada vez que se reinicia el contenedor webserver
.
Si genera una URL de inicio de sesión con Drush, reemplace el webserver
en la URL de inicio de sesión con localhost:[PORT]
, como: http:/localhost:32794/user/reset/1/1561455114/sKYjEf26WZ6bzuh-KrNY425_3KCppiCHI8SxKZ158Lw/login.
En esta configuración, todo está preconfigurado para ejecutar cualquier prueba PHPUnit de Drupal 8, incluidas, entre otras, las pruebas PHPUnit Javascript. Si tiene PHPUnit instalado como una dependencia de Composer en su proyecto, entonces ejecutar pruebas de PHPUnit es simple, aquí hay algunos ejemplos:
$ 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.
Puede encontrar más información sobre los parámetros CLI de PHPUnit disponibles y las opciones de configuración en la documentación oficial de PHPUnit.
docker-compose.yml
contiene algunas configuraciones predeterminadas de Behat que permiten ejecutar pruebas de Behat dentro del contenedor PHP sin problemas. Verifique la variable de entorno BEHAT_PARAMS
en la definición del contenedor php
.
behat.yml.dist
a la carpeta de build
con cp drupal-dev/examples/behat/behat.yml.dist build/behat.yml.dist
. También puede agregar su behat.yml
con anulaciones a este directorio si tiene uno.drupal-dev/examples/behat/login.feature
para build/behat
con mkdir build/behat && cp drupal-dev/examples/behat/login.feature build/behat
.build/behat
: docker compose exec php php vendor/bin/behat
.Puede encontrar más información sobre los parámetros disponibles de la CLI de Behat y las opciones de configuración en la documentación oficial de la extensión Behat y Drupal Behat.
Se recomienda instalar el paquete pronovix/drupal-qa
con Composer porque incluye un montón de extensiones útiles de Behat que podrían hacerle la vida más fácil cuando esté probando un sitio.
MailHog captura todos los correos electrónicos salientes de este entorno de desarrollo. (A menos que anule la configuración predeterminada del sistema de correo en Drupal).
Si desea revisar todos los correos electrónicos enviados, verifique el puerto local del contenedor de mailhog
con docker compose ps mailhog
:
Name Command State Ports
----------------------------------------------------------------------------------
my_module_mailhog MailHog Up 1025/tcp, 0.0.0.0:32772- > 8025/tcp
y abra la interfaz de usuario de administración de MailHog en su navegador, por ejemplo, http://localhost:32772
.