Ya vimos en el anterior artículo cómo instalar Docker y Docker Compose en una máquina linux Centos 7. Ahora veremos cómo crear un contenedor de ejemplo para crear nuestra primera aplicación en un contenedor de Docker. Haremos el ejemplo con WordPress, ya que es una aplicación que deberá servirse bajo un servidor de aplicaciones y disponer de una base de datos.
También te puede interesar:
Gestión de contenedores con Docker
Curso Práctico de AWS Cloud
Cómo aprobar la certificación de AWS Cloud Practitioner
Tabla de contenidos
Arrancar Docker
Si estáis haciendo las prácticas en una máquina virtual como yo, deberemos arrancar primero el servicio de Docker si este no lo estuviera ya.
Iniciamos Docker con el comando:
systemctl start docker
Comprobamos que esté levantado:
systemctl status docker
Fichero de Docker Compose para WordPress
Ahora crearemos una carpeta y meteremos dentro nuestro fichero de definición del contenedor de WordPress de Docker Compose. Para ello, creamos un fichero YML con el siguiente contenido.
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
Con esta definición del contenedor, estamos diciendo que usaremos MySQL 5.7 como gestor de base de datos para nuestro WordPress, y usará Apache como servidor de aplicaciones.
La instalación se publicará por el puerto 80 dentro del contenedor, pero redirigirá las peticiones por el puerto 8000 de nuestra máquina virtual. Así, si tenemos varios contenedores levantados, evitaremos que todos usen el mismo puerto 80 y haya conflicto.
Usará la carpeta /var/www/html de la propia máquina donde está instalado Docker para alojar los ficheros de la instalación de WordPress y la carpeta /var/lib/mysql para la BBDD.
Iniciar contenedor de WordPress con Docker Compose
Para crear el contenedor y lanzarlo, nos vamos a la carpeta donde hemos creado el fichero de definición de Docker Compose, y dentro de esa carpeta lanzamos el comando:
docker-compose up -d
Esto construirá el contenedor y lo dejará lanzado en background (parámetro -d).
Acceder al WordPress
Accedemos desde la web con el navegador a la ip del contenedor. Puede que no coincida con la IP de la máquina donde está instalado Docker. En mi caso, al tener la máquina virtual de Docker configurada en modo bridge, el contenedor coge la primera IP disponible de mi router y por ese publica el WordPress. Si accedemos con el navegador, veríamos la página de instalación de WordPress.
Para saber la IP que está cogiendo el contenedor lo podemos ver (en Centos 7) con el siguiente comando:
ip addr list
De todas las IPs que salgan, habrá alguna que esté en nuestro rango de red que sea la que esté usando el contenedor. Y será esa con la que tengamos que acceder desde el navegador y por el puerto que hayamos definido en el Docker Compose del contenedor.
Destruir contenedor de WordPress
El siguiente comando es para destruir el contenedor existente con la BBDD incluida hacemos: (si no queremos destruir la BBDD quitamos el parámetro --volumes)
docker-compose down --volumes
Operaciones que realiza para la eliminación del contenedor:
Stopping docker_wordpress_wordpress_1 ... done
Stopping docker_wordpress_db_1 ... done
Removing docker_wordpress_wordpress_1 ... done
Removing docker_wordpress_db_1 ... done
Removing network docker_wordpress_default
Removing volume docker_wordpress_db_data
Removing volume docker_wordpress_wordpress_data
Contenedor de WordPress con MariaDB y Ngninx
En el siguiente ejemplo he confeccionado un fichero de Docker Compose para poder crear un contenedor de WordPress con una BBDD más actual como es MariaDB. Y publicarlo también en un servidor de aplicaciones diferente como es Nginx. Así podéis apreciar las diferencias entre un fichero y otro y ver cómo se crean estas definiciones que nos permiten personalizar nuestros contenedores Docker.
Aquí también, he especificado que use una versión de PHP específica, en este caso PHP 7.3.
Y he indicado que los ficheros de WordPress y MariaDB los aloje en la carpeta data de nuestra máquina Docker.
El puerto de publicación, he elegido otro para que no se pise con el anterior, es el 8080. Así podremos tener los dos contenedores corriendo al mismo tiempo.
version: '3'
services:
mysql:
image: mariadb
volumes:
- /data/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mysql_root_pass
MYSQL_DATABASE: db_name
MYSQL_USER: user_name
MYSQL_PASSWORD: user_pass
restart: always
wordpress:
image: wordpress:php7.3-fpm-alpine
volumes:
- /data/html:/var/www/html
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysql
MYSQL_ROOT_PASSWORD: mysql_root_pass
WORDPRESS_DB_NAME: db_name
WORDPRESS_DB_USER: user_name
WORDPRESS_DB_PASSWORD: user_pass
WORDPRESS_TABLE_PREFIX: wp_
links:
- mysql
restart: always
nginx:
image: nginx:alpine
volumes:
# - ./nginx.conf:/etc/nginx/conf.d/nginx.conf
- ./:/etc/nginx/conf.d
- /data/html:/var/www/html
ports:
- 8080:80
links:
- wordpress
Si os fijáis, he dejado una línea comentada donde indico la ruta del fichero de configuración de Nginx por si queremos jugar con él. Esa ruta, al comenzar por un punto, indica que es una ruta interna del contenedor. Es decir, esa ruta no es de nuestra máquina donde tenemos instalado Docker, sino del propio entorno del contenedor que está aislado de nuestro sistema operativo.
Si lanzamos la construcción del contenedor con el comando (docker-compose up -d) y accedemos al navegador por el puerto 8080 veremos que tenemos el nuevo WordPress corriendo bajo MariaDB y Nginx. En este caso he completado la instalación del WordPress y muestro la página de bienvenida de WordPress para que veáis que funciona con normalidad.
Conclusiones
Aunque no he entrado en detalles del significado de cada parámetro del fichero de definición de WordPress con Docker Compose, vemos que crear un contenedor de Docker es muy sencillo. Sólo con unos pocos comandos es fácil echar a andar un WordPress sin mucha complicación. Y si elegimos los puertos correctamente, podemos tener lanzados todos los contenedores que queramos en la misma máquina.
Hasta aquí, mis primeros pasos sobre la gestión de contenedores Docker. Espero que os haya gustado y os sirva de iniciación.





¡Hola! Soy Javier. Soy informático y me gusta documentar todo lo que aprendo. En mi blog te enseño todo lo que sé y cómo puedes aprender a crear tu propia web, mejorar el SEO y aplicar técnicas de Marketing Digital para conseguir mayor visibilidad. Suscríbete para no perderte ninguna de mis guías sobre WordPress, posicionamiento SEO o Marketing Digital.
