En esta práctica desplegaremos un servicio de Wordpress con Docker Compose, utilizando un servicio de MySQL, PhpMyAdmin y https-portal para proteger los servicios con SSL.
Para instalar Docker y Docker Compose en Ubuntu ejecutaremos los siguientes comandos:
- Actualizamos el sistema
sudo apt update
- Instalamos Docker y Docker Compose
sudo apt install docker.io docker-compose -y
- Añadimos el usuario al grupo de Docker para poder ejecutar comandos sin necesidad de ser root
sudo usermod -aG docker ubuntu
- Cerramos la sesión y volvemos a iniciarla para que los cambios surtan efecto
newgrp docker
De esta forma ya tendremos instalado Docker y Docker Compose en nuestro sistema para poder desplegar Wordpress a continuación.
Para el despliegue de Wordpress con Docker Compose, crearemos un archivo docker-compose.yml
con el siguiente servicios:
Para el servicio de MySQL, utilizaremos la imagen oficial de MySQL y configuraremos las variables de entorno para el usuario, contraseña y base de datos.
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
Para el servicio de Wordpress, utilizaremos la imagen de bitnami/wordpress y configuraremos las variables de entorno para la base de datos, usuario y contraseña.
environment:
- WORDPRESS_USERNAME=${WORDPRESS_USERNAME}
- WORDPRESS_PASSWORD=${WORDPRESS_PASSWORD}
- WORDPRESS_EMAIL=${WORDPRESS_EMAIL}
- WORDPRESS_BLOG_NAME=${WORDPRESS_BLOG_NAME}
- WORDPRESS_DATABASE_HOST=${MYSQL_HOST}
- WORDPRESS_DATABASE_NAME=${MYSQL_DATABASE}
- WORDPRESS_DATABASE_USER=${MYSQL_USER}
- WORDPRESS_DATABASE_PASSWORD=${MYSQL_PASSWORD}
Para el servicio de PhpMyAdmin, utilizaremos la imagen oficial de PhpMyAdmin y lo configuraremos para poder conctar con distintos servicios de MySQL.
environment:
- PMA_ARBITRARY=1
Para el servicio de https-portal, utilizaremos la imagen de steveltn/https-portal y configuraremos los dominios que queremos proteger con SSL.
Con este servicio, podremos proteger los servicios de Wordpress y PhpMyAdmin para que tengas un certificado y puedan ser accedidos por HTTPS.
environment:
DOMAINS: "${DOMAIN} -> http://wordpress:8080"
STAGE: "production"