Skip to main content

Wordpress

WordPress es un sistema de gestión de contenidos lanzado el 27 de mayo de 2003, enfocado a la creación de cualquier tipo de página web. Originalmente alcanzó una gran popularidad en la creación de blogs, para luego convertirse en una de las principales herramientas para la creación de páginas web comerciales.

wp.png

Enlaces de interés

Blog Tool, Publishing Platform, and CMS – WordPress.org

Requisitos Previos

Descargar imagenes

Repositorio de Docker Hub:

Directorio

mkdir -pv $HOME/wordpress/blog/{html,mysql,redis}

Portainer- Nuevo «stack»

Add a new stack – Portainer Documentation

Web editor

En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables2.15-docker_add_stack_web_editor.gif

Fichero de variables «.env»

DOMAIN=domain.com
CONTAINERDIR=/home/user
# MariaDB enviroment variables
MYSQL_ROOT_PASSWORD=SecurePassword
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=SecurePassword
# Worpress enviroment variables
WORDPRESS_DB_HOST=mariadb
WORDPRESS_DB_NAME=$MYSQL_DATABASE
WORDPRESS_DB_USER=$MYSQL_USER
WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD

Fichero docker-compose

services:
  mariadb:
    image: mariadb
    env_file: stack.env
    restart: unless-stopped
    volumes:
      - $CONTAINERDIR/wordpress/blog/mysql:/var/lib/mysql
  wordpress:
    image: wordpress
    env_file: stack.env
    restart: unless-stopped
    depends_on:
      - mariadb
    volumes:
      - $CONTAINERDIR/wordpress/blog/html:/var/www/html
    ports: 
      - 8000:80

En este punto ya puedes ir a http://docker_IP:8080

Publicando con Traefik

traefik-concepts-1.webp

Para publicar el contenedor detrás del proxy Traefik, el contenido del fichero "docker-compose.yml" es el siguiente:

services:
  mariadb:
    image: mariadb
    restart: unless-stopped
    env_file: stack.env
    volumes:
      - $CONTAINERDIR/wordpress/blog/mysql:/var/lib/mysql
    networks:
      - backend
    labels:
      - traefik.enable=false
  wordpress:
    image: wordpress
    restart: unless-stopped
    env_file: stack.env
    depends_on:
      - mariadb
    volumes:
      - $CONTAINERDIR/wordpress/blog/html:/var/www/html
    networks:
      - backend
      - traefik_public
    labels:
      - traefik.enable=true
      - traefik.http.routers.blog.rule=Host(`blog.$DOMAIN`)
      - traefik.http.routers.blog.tls=true
      - traefik.http.routers.blog.tls.certresolver=letsencrypt
networks:
  backend:
  traefik_public:
    external: true

Acelerando con REDIS

Añade el servicio a docker compose

 redis:
  image: redis
  container_name: blog_redis
  restart: unless-stopped
  volumes:
    - $CONTAINERDIR/wordpress/blog/redis:/data
  networks:
    - backend
  labels:
   - traefik.enable=false

Añade al fichero de configuración wp-config.php las siguientes líneas:

define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_DATABASE', 0);

Por último, instala el plugin en wordpress Redis Object Cache – Plugin WordPress | WordPress.org España