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:

Licencia Creative Commons

Comments

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies