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 imagenesImagen

RepositorioRepositorios 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=SecurePasswordyour_root_password
    MYSQL_DATABASE=wordpress
    MYSQL_USER=wordpress
    MYSQL_PASSWORD=SecurePasswordyour_wordpress_db_password
    # Worpress enviroment variablesWordPress
    WORDPRESS_DB_HOST=mariadbdb
    WORDPRESS_DB_NAME=$MYSQL_DATABASE{MYSQL_DATABASE}
    WORDPRESS_DB_USER=$MYSQL_USER{MYSQL_USER}
    WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD{MYSQL_PASSWORD}
    WORDPRESS_TABLE_PREFIX=wp_

    Fichero docker-compose

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

    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 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