Docker for Drupal | Importar proyecto existente
Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI
Si estás trabajando con Drupal, en muchas ocasiones te verás en la necesidad de instalar y poner en marcha, en tu entorno local, proyectos que han sido creados previamente por otros desarrolladores o miembros de tu equipo de trabajo, para que puedas realizar la implementación de algunos cambios, analizar el código del código o simplemente realizar tareas de testing en un entorno seguro.
Tienes disponibles varios métodos de configuración para entornos locales HACIENDO CLIC AQUÍ
Hoy te quiero mostrar, cómo trabajar en tu entorno local, basándonos en contenedores Docker y un proyecto existente de Drupal 9, para que puedas entender todos los pasos necesarios y activar cualquier proyectos sin la necesidad de invertir demasiado tiempo en el proceso.
Activar un proyecto Drupal 9 existente utilizando Docker for Drupal
Requisitos:
- Tener instalado Docker y Docker compose en tu entorno local. HAZ CLIC AQUI
- Tener los archivos del proyecto Drupal con el que vas a trabajar. Para descargar la estructura base vacía HAZ CLIC AQUÍ
- Tener la base de datos del proyecto Drupal con el vas a trabajar
Paso 1 - Descargar archivos servidor
Antes de poder comenzar con el proceso de instalación del proyecto Drupal, necesitaremos poder ejecutar código PHP, acceder a nuestra base de datos por medio de Mysql y acceder a un servidor Apache o NGNIX.
La buena noticia, es que exite un repositorio, en el que podremos encontrar todo lo necesario, se llama DockerForDrupal, desarrollado por el equipo de Wodby.
Así que abriremos nuestra consola y, a continuación, clonaremos el respositorio, para tener disponibles todos los archivos:
git clone https://github.com/wodby/docker4drupal.git/ server
Esto descargará todos los archivos en la carpeta server, y de esta manera, podremos copiar los archivos necesarios para cualquier proyecto de Drupal, sin la necesidad de tener que descargarlos nuevamente en el futuro.
Para que no tengamos ningún tipo de conflicto, una vez copiemos los archivos necesarios en cualquier proyecto de Drupal, eliminaremos el directorio .git y el archivo docker-compose.override.yml
Así que nos colocaremos dentro de la carpeta server y a continuación, ejecutaremos los siguientes comandos en nuestra consola:
sudo rm -rf .git
sudo rm -f docker-compose.override.yml
Con estos dos comandos habremos eliminado cualquier posibilidad de conflicto en el futuro.
Paso 2 - Copiar los archivos desde el servidor hacia Drupal
En este punto, lo próximo que necesitaremos realizar el la copia de todos los archivos ubicados en la carpeta server, hacia la carpeta raíz del nuestro proyecto Drupal, puedes hacerlo por consola o desde el explorador de archivos de windows, arrastrándolos.
sudo cp -R server/ drupal9
Paso 3 - Ajuste de configuración en el archivo .env
Antes de poder comenzar a trabajar con los contenedores relacionados con nuestro proyecto Drupal, tendremos que explorar y modificar algunos ajustes, relacionados principalmente con el nombre del proyecto, la conexión con MySQL, entre otros.
Para ello, abriremos el archivo (.env), que veremos en nuestra carpeta raiz, al haber copiado los archivos desde la carpetar server; en él encontraremos todas las definiciones por defecto, paa trabajar con un proyecto Drupal, incluyendo el nombre del proyecto, datos de conexión al servidor mysql, entre otros.
Como la idea es trabajar con un proyecto que ya existe, deberíamos modificar algunos de estos datos, o simplemente, dejar los mismos y actualizar los datos de conexión en el archivo de Drupal llamado settings.php, dentro de la carpeta "web/sites/default/"
### PROJECT SETTINGS PROJECT_NAME=drupal9_existente PROJECT_BASE_URL=drupal9_existente.docker.localhost PROJECT_PORT=8000 DB_NAME=drupal9_existente DB_USER=drupal9_existente DB_PASSWORD=drupal9_existente DB_ROOT_PASSWORD=password DB_HOST=mariadb DB_PORT=3306 DB_DRIVER=mysql
Paso 4 - Arranque y comprobación de contenedores Docker
Si todos los pasos anteriores no han devuelto ningún error o si ya los hemos corregido, entonces, podremos poner en marcha todos los contenedores, para continuar con el proceso de instalación de Drupal.
El primer comando que tendremos que ejecutar para el arranque será el siguiente:
docker-compose up -d
Si tienes instalado Make, también puedes utilizar este comando :
make up
Si quieres saber qué es Make y cómo instalarlo, HAZ CLIC AQUÍ
Esto se iniciará el proceso de activación de todos los cotenedores en segundo plano, para que podamos continuar en la misa ventana de nuestra consola, sin entrar en conflicto cada vez que ejecutemos código posteriormente.
Paso 5 - Importación de la base de datos
Ya tenemos todo lo necesario para que podamos acceder a nuestro proyecto de Drupal, los contenedores ya están funcionando, por lo que, si escribimos el dominio, configurado en el archivo .evn, dentro de nuesto navegador, lo siguiente que tendríamos que ver es nuesto proyecto funcionando, pero todavía no hemos importado la base de datos para que esto ocurra.
Para importar la base de datos dentro de nuestro contenedor y que podamos ver luego el proyecto, tendremos que acceder directamente dentro del contenedor adecuado, para eso, ejecutaremos el comando que nos devolverá el nombre y estatus de todos los contenedores:
docker ps
A continuacióbn, buscaremos el Identificador único para el contenedor de Mysql, y luego escribiremos el siguiente comando, sustituyendo los datos necesarios:
docker exec -it ID_CONTENEDOR bash
Con esto podremos acceder al interior del contenedor seleccionado, que en este caso será el encargado de gestionar nuestra base de datos y a continuación, podremos ejecutar cualquiera de los comando de mysql.
Para acceder al servidor Mysql y consultar, podremos ejecutar algo parecido al siguiente comando:
mysql -udrupal9_existente -pdrupal9_existente
Con la anterior líneas, estaremos dentro de MySql y podremos ver el listado de bases de datos, de usuarios, permisos, etc.
En nuestro caso, ya tenemos listo el archivo que vamos a importar, colocado dentro de la carpeta raíz de nuestro proyecto Drupal, por lo tanto, para accedere al contenedor y realizar la importación, bastará con ejecutar el siguiente comando, sustituyendo los datos por los correspondientes a tus propios contenedores:
docker exec -i f8e957b6b019 mysql -udrupal9_existente -pdrupal9_existente drupal9_existente < backup_existente.sql
Ejecución de comandos con Composer y Drush
Ya tenemos nuestro proyecto Drupal, listo para continuar trabajando, pero quizás necesitaremos realizar algunas actualizaciones, ya sea mediante el uso del gestor de paquetes Composer, o de la herramienta Drush.
En estos casos, el contenedor desde el cual tendremos que ejecutar ambas operaciones, será el encargado de php, por lo que buscaremos nuevamente el nombre, con el comando docker ps, y una vez lo sepamos, la operación será muy parecida:
docker exec -it ID_CONTENEDOR bash
Y posteriormente, podremos ejecutar cualquiera de los comandos de Composer o Drush.
Posibles fallos durante el proceso:
Permisos de Docker
Es posible que al ejecutar el comando para levantar los contenedores de Docker docker-compose up - d, la primera vez, te encuentres con un error relacionados con los permisos de ejecucion de los contenedores
Para solucionarlo, ejecuta el siguiente comando, ubicándote dentro de la carpeta en la que quieres levantar los contenedores:
sudo chmod 777 /var/run/docker.sock
Permisos en las carpetas
Aunque estemos trabajando con los archivos de un proyecto existente, al momento de trasladar esos archivos dentro de los contenedores, es posible que tengamos que volver a otorgar permisos de escritura y lectura a la carpeta root.
Para otorgar todos los permisos, nos colocaremos dentro de nuestra carpeta raiz y a continuación, ejecutaremos el comando siguiente:
sudo chmod -R 777 ./