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
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
— 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:
- Repositorio de ejemplo de Drupal Docker: https://github.com/pepesan/drupal8-docker
- Continuous Drupal: Maintaining a Drupal Website With Docker, Git & Compose: https://circleci.com/blog/continuous-drupal-p1-maintaining-with-docker-git-composer/
Comments