Volver al Blog

Cómo configurar un sitio de Drupal o WordPress localmente usando Docker

2020-09-024 min de lectura

Este artículo no tiene como objetivo proporcionar explicaciones sobre las herramientas que utilizo para configurar sitios de Drupal/WordPress, creo que hay mucha información disponible en internet sobre ellas Docker, Traefik, Compose. El único objetivo de esta publicación es documentar el proceso que sigo, ya que es realmente fácil, y esperando que pueda ayudar a otras personas también.

Prerrequisitos: Antes de empezar, necesitas:

  1. Docker instalado.
  2. Conocimientos básicos de git.
  3. Estar familiarizado con la terminal.
  4. Un repositorio/base de código existente de Drupal/WordPress. Si solo quieres probar una instalación nueva, sigue la documentación oficial de las instalaciones vanilla de wodby.com, son más fáciles que esta. Las URL son: Drupal o WordPress

Los pasos para Drupal 7/8/9:

  1. Crea una carpeta donde quieras guardar los archivos de tu proyecto. El nombre de la carpeta es importante ya que la red se creará basándose en ella. Elige un nombre corto y de una sola palabra, si es posible. El nombre también se usará para la URL. A efectos de este tutorial, crearé una carpeta llamada d8base.
  2. Clona el repositorio Docker4Drupal en la carpeta que creaste en el paso 1. Puedes ejecutar este comando desde la terminal para hacerlo: git clone [email protected]:wodby/docker4drupal.git .
  3. Crea una nueva carpeta y nómbrala web, dentro de la carpeta que creaste en el paso 1. En el archivo docker-compose, Nginx está configurado por defecto para usar la carpeta web como la raíz del servidor. También clonaremos nuestra base de código de Drupal en esta carpeta.
  4. Elimina el archivo docker-compose.override.yml y la estructura de tus archivos debería verse así: Texto alternativo
  5. Abre los archivos en tu IDE preferido y edita el archivo .env. Las líneas que necesitamos actualizar son las líneas 7 y 8. Como nombre de proyecto, debemos usar el mismo que usamos para la carpeta que creamos en el paso 1 (en mi caso d8base). Como URL del proyecto, uso el nombre de la carpeta creada en el paso uno como prefijo y mantengo la parte docker.localhost. Esta es solo mi preferencia.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
  1. Edita el archivo docker-compose.yml y realiza las siguientes actualizaciones: *Comenta todas las líneas relacionadas con traefik ya que crearemos un archivo traefik.yml global más adelante.
  2. Texto alternativo
    *Descomenta las líneas relacionadas con PhpMyAdmin (pma) para tenerlo disponible para importar nuestra base de datos:Texto alternativo
  3. En la carpeta web, creada como parte del paso 3, clona el repositorio de tu base de código de Drupal. Asegúrate de que el código de Drupal esté en esta carpeta misma en lugar de en una subcarpeta.
  4. En la terminal, dentro de la carpeta creada en el paso 1, ejecuta el siguiente comando para iniciar los servicios:
make up

Configurar traefik

  1. Crea una nueva carpeta, recomiendo llamarla traefik, y dentro de ella crea un archivo traefik.yml, y el contenido del archivo debería ser este:
version: '3'
services:
  traefik:
    image: traefik:v2.0
    command: --api.insecure=true --providers.docker
    networks:
      - d8base
    ports:
      - '80:80'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  d8base:
    external:
      name: d8base_default

Si tienes más proyectos que necesitas configurar, solo tienes que añadirlos al traefik.yml, similar a esto:
Texto alternativo

  1. En la terminal, ejecuta el siguiente comando en la carpeta traefik:

docker-compose -f traefik.yml up -d

Los pasos para WordPress

  1. El proceso es el mismo que seguimos para Drupal, la única diferencia está en el paso 2, donde tenemos que clonar el Docker4Wordpress en su lugar.

IMPORTANTE: Asegúrate de que esta línea no esté comentada: NGINX_SERVER_ROOT: /var/www/html/web

Notas:

  1. Puedes importar la base de datos desde http://pma.d8base.docker.localhost/ reemplaza d8base con el nombre de la carpeta creada en el paso 1
  2. Tu sitio debería ser accesible desde http://d8base.docker.localhost/ reemplaza d8base con el nombre de la carpeta creada en el paso 1
  3. Asegúrate de que el puerto 80 de tu máquina no esté siendo utilizado por ninguna otra aplicación/sitio antes de seguir este tutorial.
  4. Drupal: Si necesitas ejecutar comandos drush, composer o drupal console, ejecuta este comando docker exec -it d8base_php /bin/bash y cd web reemplaza d8base con el nombre de la carpeta creada en el paso 1
  5. Si necesitas degradar la versión de composer a la versión 1, ejecuta esto: composer self-update --1
  6. Puede que necesites editar el archivo /etc/hosts y añadir una entrada como esta: 127.0.0.1 d8base.docker.localhost
  7. IMPORTANTE: Cada vez que se reinicia docker, necesitas ejecutar docker-compose -f traefik.yml up -d desde la carpeta traefik.
  8. Drupal: Asegúrate de que la información de la base de datos sea correcta en tu archivo settings.php. El archivo .env tiene esta información, y las predeterminadas deberían verse así:
$databases['default']['default'] = array (
  'database' => 'drupal',
  'username' => 'drupal',
  'password' => 'drupal',
  'prefix' => '',
  'host' => 'mariadb',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

Categorías: