Si eres de los que prefiere utilizar la solución Docker4Drupal de Wodby cuando trabajas en tus desarrollos localmente, te habrás encontrado con la necesidad de activar los certificados https para realizar algunas pruebas.
Por eso en este pequeño tutorial te mostraré los pasos necesarios para que puedas utilizar certificados localmente en tus proyectos Drupal con Docker4Drupal.
Paso 1 - Descarga de estructura:
Comenzaremos por acceder al repositorio oficial de Docker4Drupal para descargar todos los archivos de nuestro servidor de desarrollo.
Paso 2 - Eliminación de composer.override.yml
A continuación eliminaremos el archivo composer.override.yml, porque queremos tener control sobre los archivos de Drupal desde nuestro ordenador en lugar de hacerlo a través de los contenedores.
Paso 3 - Descarga de archivos Drupal y puesta en marcha
Ahora que tenemos los archivos del servidor, descargamos la estructura base de un proyecto Drupal y realizaremos la instalación tal y como explico en esta otra guía:
https://tinyurl.com/2snnanc9
Paso 4 - Comprobamos el acceso desde el navegador
Una vez instalado Drupal, comprobaremos que podemos acceder desde el navegador utilizando los datos que hemos configurado en el archivo de variables de entorno .env y que incluye el dominio y el puerto.
Paso 5 - Comprobar acceso https
Ahora que hemos validado que Drupal funciona correctamente, añadiremos https al inicio del dominio para comprobar si funciona.
Paso 6 - Actualizar archivo compose.yml
En cuanto estamos seguros de que no funciona el acceso al Drupal utilizando https, abriremos el archivo compose.yml, ubicado en nuestra carpeta raiz, para añadir las líneas que nos faltan.
Líneas NGINX:
En la declaración correspondiente con configuración de Nginx, debajo de labels, añadiremos las dos últimas líneas.
nginx:
image: wodby/nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
depends_on:
- php
environment:
NGINX_STATIC_OPEN_FILE_CACHE: "off"
NGINX_ERROR_LOG_LEVEL: debug
NGINX_BACKEND_HOST: php
NGINX_SERVER_ROOT: /var/www/html/web
NGINX_VHOST_PRESET: $NGINX_VHOST_PRESET
# NGINX_DRUPAL_FILE_PROXY_URL: http://example.com
volumes:
- ./:/var/www/html:cached
## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
# - drupal:/var/www/html
labels:
- "traefik.http.routers.${PROJECT_NAME}_nginx.rule=Host(`${PROJECT_BASE_URL}`)"
# add these lines
- "traefik.http.routers.${PROJECT_NAME}_nginx.tls.certresolver=le"
- "traefik.http.routers.${PROJECT_NAME}_nginx.entrypoints=websecure"
Líneas Traefik:
traefik:
image: traefik:v2.0
container_name: "${PROJECT_NAME}_traefik"
command:
--api.insecure=true --providers.docker
--entrypoints.websecure.address=:443
--certificatesresolvers.le.acme.email=drupaladicto@gmail.com
--certificatesresolvers.le.acme.storage=/acme.json
--certificatesresolvers.le.acme.tlschallenge=true
ports:
- "${PROJECT_PORT}:80"
# - '8080:8080' # Dashboard
# add 443 port
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Paso 7 - Reiniciar contenedores
El último paso, una vez añadidos los nuevos cambios, será detener y volver a poner en marcha los contenedores para comprobar si funciona todo según lo esperado.
Si volvemos al navegador, donde habíamos añadido https://drupal.docker.localhost:8080/, comprobaremos que todavía no vemos el Drupal.
Para corregirlo, sólo tenemos que eliminar el puerto 8080 al final del dominio y hacer clic en el botón para visitar el sitio.