En este artículo vamos a ver de forma práctica cómo instalar un entorno Wordpress con Docker Compose. Con esta rápida instalación podremos clonar sitios Wordpress y crear un entorno de desarrollo (o producción si lo deseamos) para aquellos programadores e implementadores de Wordpress.
Si no sabes que es Docker te recomiendo leas nuestro artículo: Docker, qué es y sus principales características .
Vamos a ir explicando el paso a paso hasta conseguir un sitio Wordpress completamente funcional en una máquina local con sistema operativo Ubuntu 16.04 (si necesitáis la explicación para otras distribuciones indicádnoslo en los comentarios).
Instalación de Docker en Ubuntu 16.04
Actualizamos los origenes de los paquetes de APT
Docker proporciona un repositorio APT para Ubuntu 16.04 con la versión 1.7.1 de Docker y superiores. Tendremos que indicar a APT a usar los paquetes del repositorio oficial de Docker:
-
Abrirmos una terminal.
-
Actualizamos nuestra lista de paquetes APT y nos aseguramos de que estamos usando el método
Https
y tenemos loscertificados CA
instalados:$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates
-
Añadimos la nueva clave
GPG
:$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
-
Abrimos el fichero
/etc/apt/sources.list.d/docker.list
con nuestro editor de texto favorito. Si no existe, debemos crearlo. Esto deberemos realizarlo con privilegios de administrador o root. -
Dejamos limpio el fichero.
-
Añadimos la siguiente linea para Ubuntu 16.04:
deb https://apt.dockerproject.org/repo ubuntu-xenial main
-
Guardamos y cerramos el fichero
/etc/apt/sources.list.d/docker.list
. -
Actualizamos el índice de paquetes de APT.
$ sudo apt-get update
-
Purgamos el viejo repositorio si existiese:
$ sudo apt-get purge lxc-docker
-
Verificamos que APT instalará el paquete desde el repositorio correcto:
$ apt-cache policy docker-engine
Instalación de Docker
Una vez tenemos actualizado APT es hora de instalar Docker.
-
Instalación de Docker:
$ sudo apt-get install docker-engine
-
Arrancamos el demonio de Docker:
$ sudo service docker start
-
Verificamos que
docker
está instalado correctamente:$ sudo docker run hello-world
Este comando descargará una imagen de test de docker y la iniciará en un contenedor. Cuando se inicie el contenedor mostrará un mensaje informativo y posteriormente se cerrará.
No vamos a entrar en otras configuraciones más avanzadas de Docker para que este artículo quede lo más sencillo y práctico posible. Para más información acerca de la[instalación de Docker puedes dirigirte a su documentación oficial .
Instalación de Docker Compose en Ubuntu 16.04
Docker Compose es una herramienta para administrar aplicaciones Docker basadas en multiples contenedores. Con Docker Compose podremos clonar, crear, eliminar, y arrancar sitios Wordpress.
Para instalar Docker Compose necesitaremos la herramienta curl
instalada en el sistema, si no disponemos de ella la instalamos con:
$ sudo apt-get install curl
Ahora ya podremos instalar docker-compose
:
-
Instalación de Docker Compose con un solo comando como superusuario:
$ sudo -i # curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # exit
-
Damos permisos de ejecución al binario:
$ sudo chmod +x /usr/local/bin/docker-compose
-
Testeamos la instalación:
$ sudo docker-compose --version docker-compose version 1.8.0, build f3628c7
Opcionalmente podemos instalar el autocompletado de docker-compose
para bash
:
$ sudo -i
# curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
# exit
Configuración de Permisos
Hasta el momento debíamos iniciar docker
con permisos de superusuario ( sudo
o root
). Ahora vamos a configurar los permisos para que nuestro usuario pueda ejecutar el demonio de Docker y hacer uso de docker-compose
.
Para evitar tener que usar sudo
cuando se utiliza el comando docker
, debemos crear un grupo de Unix llamado docker
y añadir usuarios al mismo. Cuando se inicie el demonio docker
, el socket de Unix pasará a ser propiedad del grupo docker
con permisos de Lectura/Escritura. Comencemos:
- Entramos a Ubuntu con un usuario con privilegios de
sudo
. - Creamos el grupo
docker
:$ sudo groupadd docker
- Añadimos nuestro usuario al grupo
docker
:$ sudo usermod -aG docker $USER
- Cerramos nuestras sesión y la iniciamos nuevamente. Esto nos asegura que nuestro usuario esta iniciado con los permisos correctos.
- Verificamos que funciona correctamente iniciado
docker
sin el uso desudo
:$ docker run hello-world
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
DOCKER_HOST
no está inicializada en tushell
. Si lo está, bórrala.
En este punto ya tenemos el sistema listo para trabajar con docker
y docker-compose
.
Wordpress con Docker Compose
Con Docker Compose podemos iniciar fácilmente WordPRess en un entorno aíslado contruido mediante contenedores Docker.
Definiendo el proyecto
- Creamos un directorio vacío para nuestro proyecto. Este directorio podrá tener el nombre que nosotros queramos y aquí se encontrarán los recursos necesarios para construir la imagen. En el directorio del proyecto deberemos tener un fichero llamado
docker-compose.yml
que será el encargado de tener la definido nuestros contenedores. En mi caso crearé el directorio llamadowordpress-wptesteando
:$ cd ~ $ mkdir wordpress-wptesteando
- Entramos al directorio del proyecto:
$ cd wordpress-wptesteando
- Creamos el fichero
docker-compose.yml
que contendrá la definición de nuestro proyecto. Nos basaremos en dos instancias separadas: Una instancia paraWordpress
y otra instancia separada paraMySQL
con un volumen montado para la persistencia de los datos demysql
. Este será nuestro fichero docker-compose.yml :version: '2' services: db: image: mysql:5.7 volumes: - "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest links: - db ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress
./.data/db
será automáticamente creado en el directorio del proyecto, a la misma altura que el ficherodocker-compose.yml
, y contendrá los datos persistentes de la base de datos de nuestro WordPress.
Contruyendo el proyecto
Ahora vamos a ejecutar el comando docker-compose up -d
estando situados dentro del directorio del proyecto.
Este comando descargará ( pull
) las imágenes necesarias y iniciará el contenedor de Wordpress y de la base de datos.
$ docker-compose up -d
Creating network "wordpresswptesteando_default" with the default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
Digest: sha256:e6dc999f4e2d5982e74a008ff08c0641f0832e19339aaf4f4c2bc2ca426e96c6
Status: Downloaded newer image for mysql:5.7
Creating wordpresswptesteando_db_1
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
357ea8c3d80b: Already exists
Digest: sha256:56cd7233bf69a580d823d29ad16c085392abf3fc00b1e4ed7b955b83db2544f7
Status: Downloaded newer image for wordpress:latest
Creating wordpresswptesteando_wordpress_1
Con esto ya tendremos creados y corriendo dos contenedores:
wordpresswptesteando_db_1
: Es el contenedor MySQL para nuestra base de datos de Wordpress.wordpresswptesteando_wordpress_1
: Es el contenedor que contiene nuestra instancia de WordPress además del servidor Web apache.
Accediendo a WordPress desde el navegador
Al definir nuestro proyecto WordPress anteriormente indicamos la siguiente opción:
ports:
- "8000:80"
Con esto hicimos un link entre los puertos 80
del servidor web que está corriendo en nuestro contenedor WordPress y el puerto 8000
de nuestra máquina local.
Para acceder a nuestro sitio web WordPress recien creado, deberemos abrir el navegador web en la dirección ip local de nuestra máquina o localhost
pero en el puerto que tenemos linkeado al contenedor Wordpress, es decir, el puerto 8000
.
Para ello vamos a abrir http://localhost:8000
en nuestro navegador web preferido y ya podremos comenzar con la instalación de WordPress.
Conclusiones
Aunque te parezca un artículo bastante largo, en realidad, todo el proceso no debería llevarte más de 3 minutos si ya dispones de Docker y Docker Compose instalados en tu máquina local.
Nos podríamos haber extendido mucho más en la explicación de Docker y Docker Compose pero nos quedaría un artículo demasiado largo. Te invito a que eches un vistazo a nuestro Curso de Docker o al Curso de Docker Swarm, Kubernetes y CoreOS Fleet si eres un usuario más avanzado, ambos impartidos por ingenieros de Docker INC. .
Con el uso de Docker Compose podremos crear rápidamente y de manera sencilla una nueva instancia de WordPress cada vez que lo necesitemos, además de usar las funcionalidades propias de Docker sobre nuestros contedores.
Si tienes alguna pregunta o sugerencia, por favor, déjala en los comentarios. No olvides compartir con todo el que le pueda interesar el artículo, así ayudamos a tener mejores profesionales IT.
¡Nos vemos en el próximo artículo!