Crear ambiente WordPress con Docker

Con esta guia vamos a poder levantar un ambiente wordpress con docker, instando PHP, MySQL y evidentemente WordPress, también, opcionalmente vamos a aplicar PhpMyAdmin para gestionar nuestra base de datos en caso de que lo necesitemos.

Cabe mencionar que esta guia estará basada en un entorno linux

¿Qué necesitamos para crear ambiente WordPress con Docker?

Solo vamos a necesitar 3 cositas.

  1. Tener instalado docker
  2. Tener instalado docker-compose
  3. un editor de códido

Vídeo de como crear ambiente WordPress con Docker

Preparando el archivo docker-compose

  • Crea un directorio nuevo en tu espacio de trabajo para tener el proyecto mas organizado
  • En ese directorio solo tienes que crear un archivo docker-compose.yml, que es el que le va a dar vida al proyecto

El archivo docker, en primera instancia, debería quedar de la siguiente manera:

version: 2
services:
volumes:
  database:

Creando el contenedor de base de datos

Dentro del parámetro services colocamos el siguiente código.

mysql:
  container_name: wp-db
  image: mysql:5.6
  volumes:
    - db_data:/var/lib/mysql
  environment:
    MYSQL_DATABASE: wordpress
    MYSQL_ROOT_PASSWORD: password
  • container_name: es el nombre del contenedor, puedes seguir la regla de <nombre-proyecto>-<nombre-servicio>. Ej: tienda-base-de-datos
  • image: es la imagen de docker que vamos a utilizar, en este caso mysql, versión 5.6
  • volumes: El concepto de volumes es algo mas complejo, pero básicamente es como un intercambio mutuo y constante de información entre el contenedor y tu maquina. En este caso compartirán la información de base de datos para que cuando se apaguen los contenedores no se pierda la información
  • environment -> MYSQL_DATABASE: es el nombre de la base de datos.
  • environment -> MYSQL_ROOT_PASSWORD: es el password para la contraseña del usuario root en MySql

Creando el contenedor de WordPress

Abajo del servicio de mysql, ahora colocamos el siguiente:

wordpress:
  container_name: wp-web
  image: wordpress:4.9.8-apache
  volumes:
    - ./:/var/www/html/wp-content 
  depends_on:
    - mysql
  ports:
    - "8000:80"
  environment:
    WORDPRESS_DB_HOST: mysql:3306
    WORDPRESS_DB_USER: root
    WORDPRESS_DB_PASSWORD: password
  • volumes: en este caso, lo que está haciendo es compartiendo archivos entre la maquina y el contenedor.
  • depends_on: como su nombre lo dice, depende de otros contenedores.
  • ports: esto son los puertos que vamos a utilizar, el primer valor sera el puerto de tu maquina y el segundo es el puerto del contenedor, esto es para que cuando se corra el servicio de apache, en el contenedor se levante en el puerto 80 y en tu maquina en el puerto 8000. recuerda que puedes cambiar los puertos si es necesario.
  • WORDPRESS_DB_HOST: el host para la configuración de base de datos a la que nos vamos a conectar.
  • WORDPRESS_DB_USER: El usuario de base de datos con el que nos vamos a conectar.
  • WORDPRESS_DB_PASSWORD: El password del usuario con cual nos vamos a conectar.

Si en el servicio mysql, en el environment -> MYSQL_DATABASE, no colocaste como base de datos wordpress, deberás colocar la propiedad WORDPRESS_DB_NAME en el environment del servicio wordpress para que quede algo como lo siguiente:

environment:
    WORDPRESS_DB_HOST: mysql:3306
    WORDPRESS_DB_USER: root
    WORDPRESS_DB_PASSWORD: password
    WORDPRESS_DB_NAME: [nombre_base_de_datos]

La imagen de wordpress establece por defecto wordpress como nombre de base de datos.

Creando contenedor para PhpMyAdmin

Al igual que los anteriores, recuerden que este es opcional, es solo para manejar nuestra base de datos más cómodos para los que no loe gusta la terminal. El código quedaría así:

phpmyadmin:
  container_name: wp-phpmyadmin
  depends_on:
    - mysql
  image: phpmyadmin/phpmyadmin
  ports:
    - 8001:80
  environment:
    PMA_HOST: mysql
    MYSQL_USER: root
    MYSQL_ROOT_PASSWORD: password

Una vez tengamos listo el archivo, ejecutamos el siguiente comando dentro de nuestro directorio del proyecto:

$ docker-compose up -d

Esto va a comenzar a descargar las imágenes y levantará los contenedores. una vez terminen, ya podrán acceder a localhost:8000, para comenzar la instalación básica de WordPress, y accediendo a localhost:8001 podrán acceder a PhpMyAdmin.

Con esto ya tendríamos

Aquí tienen un enlace de como debería quedar el archivo.

Ver más sobre