Wordpress + Traefik
Requerimientos previos
- Docker instalado
 - Instancia de Traefik instalada y corriendo
 - Red de Docker creada para conectar contenedor con Traefik
 - Opcionalmente, usa un middleware configurado en Traefik:
- autodetectContenttype@file
 - permissionsPolicy@file
 - referrerPolicy@file
 - cspWordpress@file
 - secHeaders@file
 
 
Pasos
- Preparar dominio/subdominio de la instancia a configurar
 - Crear archivos de configuración
 - Cambiar valores de acuerdo a las necesidades de la instancia
 - Levantar contenedor (docker composer up)
 - Visitar aplicación y comprobar que esté funcionando correctamente
 
Configuración previa
Crear secretos en Docker para acceso a base de datos
# Creación de secretos para credenciales de base de datos
printf "palabra secreta 1" | docker secret create db_root_password - 
printf "palabra secreta 2" | docker secret create db_user - 
printf "palabra secreta 3" | docker secret create db_password - 
Archivos de configuración
.env
INSTANCE_URL=ejemplo.com
DB_NAME=nombre_base_de_datos
DB_TABLE_PREFIX=prefijo_
UID=1000
GID=1000
GID_FILES=33
VOLUME_PATH=./web
compose.yaml
En la configuración de entrypoints y certresolver cambiar de acuerdo a los valores configurados en Traefik.
services:
  bd:
    image: mariadb:latest
    container_name: bd
    volumes:
      - ${VOLUME_PATH}/wordpress-db:/var/lib/mysql
      - ./entrypoint-initdb:/docker-entrypoint-initdb.d:ro
    environment:
      - UID=${UID}
      - GID=${GID}
      - MYSQL_ROOT_PASSWORD=/run/secrets/db_root_password
      - MYSQL_USER=/run/secrets/db_user
      - MYSQL_PASSWORD=/run/secrets/db_password
      - MYSQL_DATABASE=${DB_NAME}
    restart: unless-stopped
    networks:
      - traefik
  wp:
    image: wordpress:latest
    container_name: wp
    hostname: ${INSTANCE_URL}
    volumes:
      - ${VOLUME_PATH}/wordpress-files:/var/www/html
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    environment:
      - UID=${UID}
      - GID=${GID_FILES}
      - WORDPRESS_DB_HOST=bd
      - WORDPRESS_DB_NAME=${DB_NAME}
      - WORDPRESS_TABLE_PREFIX=${DB_TABLE_PREFIX}
      - WORDPRESS_DB_USER=/run/secrets/db_user
      - WORDPRESS_DB_PASSWORD=/run/secrets/db_password
    depends_on:
      - bd
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress-http.rule=Host(`${INSTANCE_URL}`)"
      - "traefik.http.routers.wordpress-http.entrypoints=http"
      - "traefik.http.routers.wordpress-http.middlewares=http-to-https"
      - "traefik.http.middlewares.http-to-https.redirectscheme.scheme=https"
      - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https"
      - "traefik.http.routers.wordpress.rule=Host(`${INSTANCE_URL}`)"
      - "traefik.http.routers.wordpress.entrypoints=https"
      - "traefik.http.routers.wordpress.tls=true"
      - "traefik.http.routers.wordpress.middlewares=sslheader@docker,permissionsPolicy@file,referrerPolicy@file,cspWordpress@file,secHeaders@file,autoDetectContentType@file"
      - "traefik.http.routers.wordpress.tls.certresolver=tls"
      - "traefik.http.services.wordpress.loadbalancer.server.port=80"
      - "traefik.http.services.wordpress.loadbalancer.passHostHeader=true"
    networks:
      - traefik
networks:
  traefik:
    external: true
uploads.ini (opcional)
Configuración especial para PHP, para permitir subir archivos de hasta 100MB
file_uploads = On
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 600
No hay comentarios para mostrar
No hay comentarios para mostrar