Instalar entorno desarrollo drupal con docker

1- Instalar docker

https://docs.docker.com/engine/installation/

2- Descargar docker-compose

https://docs.docker.com/compose/install/

3- Crear archivo dockerfile en un directorio de trabajo.

FROM php:7-apache
RUN a2enmod rewrite

# install the PHP extensions we need (git for Composer, mysql-client for mysqldump)
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev libpq-dev git mysql-client-5.5 wget \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd –with-png-dir=/usr –with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring opcache pdo pdo_mysql pdo_pgsql zip

# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN { \
echo ‘opcache.memory_consumption=128’; \
echo ‘opcache.interned_strings_buffer=8’; \
echo ‘opcache.max_accelerated_files=4000’; \
echo ‘opcache.revalidate_freq=60’; \
echo ‘opcache.fast_shutdown=1’; \
echo ‘opcache.enable_cli=1’; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini

WORKDIR /root

#Configure PHP memory limit
RUN { \
echo “memory_limit = 256M”; \
} >> /usr/local/etc/php/php.ini

#Install Drush 8.1.2
RUN wget https://github.com/drush-ops/drush/releases/download/8.1.2/drush.phar && php drush.phar core-status && chmod +x drush.phar \
&& mv drush.phar /usr/local/bin/drush

#Install Drupal Console
RUN curl http://drupalconsole.com/installer -L -o drupal.phar
RUN mv drupal.phar /usr/local/bin/drupal && chmod +x /usr/local/bin/drupal
RUN drupal init

WORKDIR /var/www/html

4- Crear la imagen docker

#docker build -t YOUR_IMAGE_NAME .

5- Crear el archivo docker-compose.yml

Cambiar /home/user/webdev/ por el directorio de trabajo.

version: ‘2’
services:
drupal-web:
image: YOUR_IMAGE_NAME:latest
ports:
– “8080:80”
depends_on:
– mysql-server
links:
– mysql-server:mysql
volumes:
– /home/user/webdev/drupal-test/htmlroot:/var/www/html
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
volumes:
– /home/user/webdev/drupal-test/mysql:/var/lib/mysql
tendremos que crear el directorio drupal-test y los subdirectorios mysql y htmlroot en el directorio de trabajo. Con esto mantenemos los cambios al destruir los containers.

6- Arrancamos los dos containers docker, el servidor web y mysql.

#docker-compose up -d

7- Con los containers levantados entramos en el container web para instalar drupal via drush.

#docker-compose exec drupal-web bash

8- Ya dentro del container ejecutamos los comandos de instalación drupal.

$drush dl drupal

$cd drupal-x.x.x

$drush site-install standard –db-url=mysql://drupal:drupal@mysql/drupal

$exit

#chown -R www-data:www-data /directoriotrabajo/drupal-test/htmlroot/drupal-x.x.x/sites

9- Cambiar la contraseña del usuario admin entrando en la web del container.

http://localhost:8080/drupal-x.x.x

10- Por último, para parar los containers y liberar memoria ejecutamos la orden correspondiente.

#docker-compose stop