Curso de Drupal 8 (IV): Instalación con Docker, Composer y Drush

La instalación con XAMPP es la forma en la que se ha hecho tradicionalmente el desarrollo de PHP, pero ya estamos en 2019 y ya es hora de actualizar la guía de instalación utilizando contenedores Docker, Composer y Drush.

En esta guía vamos a asumir que ya tienes Docker y Docker Compose instalador en tu máquina.

La idea es crear un fichero docker-compose.yaml que sea capaz de arrancar todo lo necesario para que funcione Drupal. Es decir, Apache, PHP, MySql, Composer y Drush.

Para ello será necesario editar una serie de ficheros, empezando por el Dockefile para drupal:

FROM drupal:8.4-apache

RUN apt-get update && apt-get install -y \ curl \ git \ mysql-client \ vim \ wget

RUN php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);” && \ php composer-setup.php && \ mv composer.phar /usr/local/bin/composer && \ php -r “unlink(‘composer-setup.php’);”

RUN wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/download/0.4.2/drush.phar && \ chmod +x drush.phar && \ mv drush.phar /usr/local/bin/drush

RUN rm -rf /var/www/html/*

COPY apache-drupal.conf /etc/apache2/sites-enabled/000-default.conf

WORKDIR /app

--- Fin de fichero

Necesitaremos también el fichero de configuración de apache para el drupal, llamado apache-drupal,conf:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /app/web

<Directory /app/web> AllowOverride All Require all granted

ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

--- Fin del fichero

Y por último el dichero docker-compose.yaml que junta todos los contenedores para lanzarlos a la vez:

version: ‘3’ services: db: image: mariadb:10.2 environment: MYSQL_DATABASE: drupal MYSQL_ROOT_PASSWORD: drupal volumes: - db_data:/var/lib/mysql restart: always drupal: depends_on: - db build: . ports: - “8080:80” volumes: - ./app:/app restart: always volumes: db_data:

—Fin del fichero

Para arrancar los servicios será necesario ejecutar el comando:

docker-compose up -d

Di ejecutamos todo correcto deberán aparecer dos contenedores con el:

docker-compose ps

Ahora será cuando deberemos ejecutar los comandos de descarga de drupal, para ello será necesario meternos en el contenedor de drupal:

docker exec -it nombre_contendor_drupal bash

El nombre del contendor deberemos cogerlo de la salida del docker-compose ps

Si todo va correcto se descargará todo lo necesario para funcionar, composer y drush y lo único que deberemos ejecutar es la descarga de drupal, dentro de la shell del contenedor:

/app # composer create-project drupal-composer/drupal-project:8.x-dev /app —stability dev —no-interaction

Nota: ojo delante de stability y de no-interaction hay dos guiones juntos(- -)

/app # mkdir -p /app/config/sync /app # chown -R www-data:www-data /app/web

A partir de este momento deberíamos poder acceder a la url http://localhost:8080

Aquí seleccionaremos el idioma, por ejemplo castellano

Después elegiremos el perfil de instalación, por ejemplo estándar

Después deberemos configurar la BBDD, con los datos del fichero de docker-compose.yaml:

Base de Datos: drupal

Usuario: root

Contraseña: drupal

Hay que abrir la opciones avanzadas, para cambiar el servidor, por el nombre del contenedor de la bbdd:

Servidor/host: db

Puerto: 3306

Después pulsaremos el botón de Continuar

Veremos cómo se descargan las traducciones y se realiza el resto de la instalación

Una vez terminada srá necesario indicar los datos del sitio web:

Nombre del sitio web, email de contacto.

Datos del administrador, de ejemplo, no poner en producción:

Nombre de Usuario: admin

Contraseña: admin

Email del administrador: p@p.com

Datos de Zona horaria:

Pais: España

Zona Horaria:

Madrid

Pulsar en Guardar y Continuar

Después de terminar las traducciones, ya debería aparecer el sitio web y podremos loguearnos.

Es buen momento para meternos en el contenedor y exportar la configuración:

/app # drush config-export /app # exit

A partir de este punto estaría bien crear el repositorio git:

git init .

git add .

git commit -m “Initial commit.”

Después podremos gestionar los datos desde el repositorio.

Hay que hacer especial incapie en el fichero .gitignore del directorio app, porque las configuraciones y los ficheros subidos al servidor no serán integrados en el repositorio. Estos ficheros deberemos manejarlos en por volúmenes o sincronizaciones.

Referencias:

Licencia Creative Commons

Esta obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.