Instalar Drupal con Composer y Docker

Instalar Drupal con Composer y Docker

A mucha gente que comienza con Drupal puede resultarle intimidante por lo complejo que es, si además se añade la capa de Composer y Docker muchos pueden echarse para atrás, vamos a ver fácilmente como se pueden utilizar los 3 en conjunto.

Antes de comenzar, vamos a necesitar tener en nuestro equipo Composer y también Docker, al depender la instalación del sistema operativo, lo mejor será buscar en Google (si, suena muy mal, pero no es lo mismo en Windows que Linux, o incluso entre Ubuntu, Fedora o Suse.)

Hay un video disponible que se complementa con este articulo, si se tiene dudas en algun punto del artículo, recomiendo ver el video para resolver las dudas y los posibles problemas.

 

Descargando Drupal

Cuando tengamos todo listo, lo primero es crearnos una carpeta para alojar nuestro proyecto, en este caso yo voy a crear una carpeta llamada “docker4drupal” y dentro descargar Drupal con un comando de Composer:

Descargar Drupal con Composer
$ composer create-project drupal/recommended-project ./

El punto y barra al final es para indicarle a composer que nos descargue Drupal en la misma carpeta donde estamos. La carpeta tiene que estar vacía, de lo contrario nos dará un error.

Descargar Docker4Drupal

Una vez tengamos Drupal descargado (o mientras se descarga), vamos a ir al repositorio git de docker4drupal y podemos clonar el repositorio con git clone, o descargarnos el zip. En este caso por comodidad, vamos a descargar el zip y descomprimirlo en cualquier lado.

Cuando lo tengamos descomprimido, entramos dentro de la carpeta y nos copiamos todos los archivos que hay, incluidos los ocultos, uno llamado .env es imprescindible. La única carpeta que podemos ignorar es .github.

Al copiarlo todo, deberíamos tener una estructura de carpetas muy parecida a esta:

Listado de carpetas de docker4drupal y composer

Configurando Docker4Drupal

Llegado a este punto, tenemos 2 opciones, si queremos simplemente probar un Drupal limpio, no tocar el archivo “docker-compose.override.yml”, si queremos usar el que hemos descargado nosotros con Composer, debemos borrar ese archivo.

Escojas la opción que escojas, ahora hace falta abrir el archivo .env para comprobar la configuracion, en este caso podemos hacerlo con un editor de texto como Visual Studio Code.

Archivo .env de docker4drupal

Tenemos que centrarnos en 2 secciones principalmente, en la primera vemos el nombre del proyecto en “PROJECT_NAME” y la url del proyecto en “PROJECT_BASE_URL”. Es recomendable que indiquemos manualmente un nombre de proyecto en cada proyecto (valga la redundancia) y la url que queramos, pero recomendable cambiarla también.

En la segunda sección, están los datos de conexión al servidor de bases de datos. El mas relevante es el del host, ya que por defecto se usa MariaDB, y al tener el nombre definido en el docker-compose como “mariadb”, ese será el nombre del host, si utilizamos PostgreSQL, el nombre del host cambiará a “postgres” porque en el docker-compose está asi definido.

Persistencia de base de datos

Una vez tengamos clara esa parte, saltamos a la siguiente que está en el archivo Docker-compose.yml, si no queremos perder la base de datos al parar Docker aquí tenemos que hacer una modificación, y es que al no tener los contenedores de Docker estado, perderemos la información, para evitar eso tenemos que activar el volumen de mariadb, descomentando la opción de “volumes” y la línea de “Use bind mount” indicando la ruta que quereamos al inicio sin tocar la parte derecha de los 2 puntos.

Persistencia de MariaDB en Docker4Drupal

Activar mas servicios

Si queremos activar mas servicios, como PhpMyamin, únicamente tenemos que buscarlos y descomentar las líneas quitando la almohadilla.

PhpMyadmin en docker4drupal

Iniciando el proyecto con Docker Compose

Ahora que lo tenemos todo listo (recordad guardar todos los archivos que se han modificado), podemos iniciarlo, para ello nos basta un comando:

$ docker-compose up -d
Iniciando Docker compose

Con ese comando, si no hemos cometido ningún error en la configuracion (Yaml es sensible a esto, así que cuidado con los espacios o tabulaciones), podremos acceder a nuestro Drupal y comenzar la instalación accediendo al dominio que habíamos configurado en el valor PROJECT_BASE_URL y añadiendo el puerto 8000.

El dominio de Docker con Drupal

Solventando problemas de permisos en Linux

Llegados a este punto, puede que tengamos algunos problemas de permisos dependiendo del sistema operativo (especialmente en Linux), para solventarlos, lo mejor es que nos creemos la carpeta “files” dentro de web/sites/default y le demos todos los permisos (con "botón derecho -> propiedades” en la carpeta, ya veremos los permisos), y los mismo con el archivo settings.php también dentro de web/sites/default, lo mejor es que nos copiemos “default.settings.php” y lo llamemos “settings.php” también dándole todos los permisos.

Archivos y carpeta a modificar para los permisos correctos

Y ya está, esos es todo, durante la instalación de Drupal tendremos que poner como datos de la base de datos los que estén especificados en el archivo .env, y poco más, ya tenemos nuestro Drupal funcionando 😊.

Detener el proyecto

Podemos parar docker-compose con un comando que parara todos los contenedores, y entonces todo nuestro proyecto se cerrara, y ya no podremos acceder a el hasta que hasta que volvamos a levantarlo con “docker-compose up -d”.

$ docker-compose down

Acceder a servicios adicionales

Al inicio, cuando hemos configurado el archivo docker-compose.yml, hemos descomentado unas líneas para poder usar PhpMyadmin, tal vez os preguntéis como se puede acceder, pues es muy sencillo, tenemos que fijarnos en la URL que esté configurada, y esa URL esta en la label (fijaros donde está el Host):

El host de phpmyadmin en docker4drupal

Pues eso es lo que tendréis que añadir a la url del proyecto para poder acceder:

La URL de phpmyamin en docker4drupal

Pues eso se lo podeis aplicar a todos los servicios que tengan una url.

A traves de SSH

Para los que no tengan una url o queráis acceder via ssh, podeis ejecutar un comando, indicando cual es el servicio (fijaros en el archivo docker-compose.yml para saber cual es), el primer ejemplo es para el de php y el segundo para el de phpmyadmin:

$ docker-compose exec php bash
$ docker-compose exec pma bash

Teneis que cambiar php o pma por el del contenedor que queráis.

Conclusiones

Como vemos, no es tan complicado iniciar un proyecto Drupal con Composer y Docker. Puede intimidar un poco, pero una vez se empieza ya es bastante fácil.

Aun y todo, docker4drupal no me convence como herramienta para desarrollo local y en el pasado me ha dado bastantes problemas, personalmente prefiero Ddev, del cual hay un curso publicado en esta web y os recomiendo que lo veáis, es una maravilla para trabajar en local con Docker y PHP.

 

Comparte este artículo:
Publicado por Borja
Image

Me metí en la aventura de Drupal con la versión 6, y aquí estoy, 10 años después, escribiendo articulos y haciendo videos sobre Drupal, quien me lo iba a decir. Aunque he probado otros framworks y cms, me quedo con Drupal de lejos, pero Symfony y Django estan entre mis favoritos. Aficionado a la montaña, la bicicleta, y el comer, de eso que no falte.