Icono del sitio RAGASYS SISTEMAS

Desplegar Drupal con Docker

Hola a tod@s,

En este post vamos a ver como desplegar Drupal con Docker, desplegaremos dos contenedores Docker para este servicio, uno de ellos será el de PostgreSQL para la base de datos que vamos a utilizar y el otro el propio de Drupal con la aplicación, este servicio irá desplegado, sobre otra máquina distinta dónde está desplegado nuestro docker con Nginx Proxy Manager, que será el que utilicemos para los certificados SSL.

services:

drupal-db:

image: postgres:16.6

container_name: drupal-db

restart: unless-stopped

env_file: .env

volumes:

– /opt/docker/drupal/drupaldb/data:/var/lib/postgresql/data

networks:

– drupal-net

 

networks:

drupal-net:

name: drupal-net

external: true

DRUPAL_DB_HOST=drupal-db

DRUPAL_DB_PORT=5432

DRUPAL_DB_NAME=drupaldb

DRUPAL_DB_USER=drupaluser

DRUPAL_DB_PASSWORD=clave_muy_segura_db

DRUPAL_DB_DRIVER=pgsql

services:

drupal-app:

image: drupal:10-apache

container_name: drupal-app

restart: unless-stopped

ports:

– 8081:80

entrypoint:

– /bin/sh

– -c

– |

# 1. Aseguramos que existan las carpetas base en el volumen

echo «Creando estructura de directorios…»

mkdir -p /var/www/html/sites/default/files/translations

 

# 2. Si NO existe default.settings.php en el volumen, lo traemos del backup interno de Drupal

# Nota: Las imágenes oficiales de Drupal guardan una copia en /opt/drupal/web/sites…

# pero para asegurar, lo creamos si no existe.

if [ ! -f /var/www/html/sites/default/default.settings.php ]; then

echo «Restaurando default.settings.php…»

# Intentamos copiarlo de la ubicación de la imagen si está disponible

cp /opt/drupal/web/sites/default/default.settings.php /var/www/html/sites/default/default.settings.php 2>/dev/null || touch /var/www/html/sites/default/default.settings.php

fi

 

# 3. Si no hay settings.php, lo creamos

if [ ! -f /var/www/html/sites/default/settings.php ]; then

echo «Creando settings.php…»

cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php

fi

 

# 4. Permisos correctos para el usuario 33 (www-data)

echo «Aplicando permisos…»

chown -R 33:33 /var/www/html/sites

chmod -R 775 /var/www/html/sites/default/files

 

# 5. Arrancar Apache

exec apache2-foreground

env_file: .env

environment:

– DRUPAL_DATABASE_HOST=${DRUPAL_DB_HOST}

– DRUPAL_DATABASE_NAME=${DRUPAL_DB_NAME}

– DRUPAL_DATABASE_USER=${DRUPAL_DB_USER}

– DRUPAL_DATABASE_PASSWORD=${DRUPAL_DB_PASSWORD}

– DRUPAL_DATABASE_DRIVER=${DRUPAL_DB_DRIVER}

volumes:

– /opt/docker/drupal/drupalapp/modules:/var/www/html/modules

– /opt/docker/drupal/drupalapp/profiles:/var/www/html/profiles

– /opt/docker/drupal/drupalapp/themes:/var/www/html/themes

– /opt/docker/drupal/drupalapp/sites:/var/www/html/sites

networks:

– drupal-net

 

networks:

drupal-net:

external: true

 

Saludos y espero que os sea de ayuda 😉

Salir de la versión móvil