Wordpress - Docker compose

En este post veremos cómo hacer un deploy de wordpress con docker-compose. Comenzamos:


Si prefieren leer la guía completa de instalación, les dejo el link:

https://docs.docker.com/compose/install/


Primero instalamos docker-compose para facilitar el trabajo.
Descargamos la última versión stable:

$ sudo curl -L \
"https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)"\
-o /usr/local/bin/docker-compose

Le damos permisos de ejecución:

$ sudo chmod +x /usr/local/bin/docker-compose

Instalamos el autocompletado:

$ sudo curl -L \
https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose \
-o /etc/bash_completion.d/docker-compose

Una vez que tenemos docker-compose funcionando, creamos un directorio:

$ mkdir wordpress && cd wordpress

Creamos un archivo YAML:

$ nano docker-compose.yml

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: cambiarPassword
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

Fijense que vamos a usar un volumen (db_data), docker-compose se va a encargar de crearlo por nosotros.
Un aspecto importante es la línea depends_on, con esto especificamos que wordpress depende de la base de datos y necesita que esté creada para funcionar.

Vamos a hacer un deploy:

$ docker-compose up -d

Hacemos un "docker ps" y vemos que se hayan creado correctamente.

Luego si consultamos la IP de nuestra máquina en el puerto 80 debería mostrarnos la típica instalación de wordpress:

Para borrar todo:

$ docker-compose down (remueve los containers y la red default).
$ docker-compose down --volumes (para remover la base de datos).