Resumen
En este artículo, vamos a seguir los pasos para instalar WordPress usando Docker. En otras palabras, vamos a instalar WordPress con un contenedor Docker y también con Docker compose. El escenario para el siguiente procedimiento se verá de la siguiente manera:una sola máquina host (un servidor Debian) y un solo motor docker en ejecución. Vamos a instalar un contenedor docker oficial de WordPress en nuestro host y configurar la persistencia de datos también. Este método, por supuesto, funcionará en otras máquinas host Linux siempre que ejecute el motor docker.
Requisitos:
- Alojamiento Linux
- Docker instalado y funcionando.
Instalar Docker
Para la instalación de Docker, podemos usar el script Docker oficial de instalación automática si está usando Debian, Ubuntu, Raspbian como host. De lo contrario, consulte los documentos de Docker o esta publicación.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Agregue docker a su grupo de usuarios:
sudo usermod -aG docker <username>
Instalar WordPress utilizando el contenedor Docker
Para instalar el contenedor docker de WordPress, podemos usar los siguientes comandos:
docker run --name some-wordpress -p 8080:80 -d wordpress
Esto implementará un contenedor Docker que ejecutará el servidor web, la instalación de WordPress, PHP y el servidor de base de datos MySQL (MariaDB). Esta opción no es una implementación ideal, ya que todo lo que contiene, incluso los datos del sitio web, permanecerán y se almacenarán dentro del contenedor y cada vez que se reinicie el contenedor, se perderán todos los datos. Es por eso que es imprescindible tener datos persistentes para WordPress (almacenar datos en el host). Para ese tipo de implementación, se sugiere ejecutar los contenedores de WordPress de la siguiente manera:
DB container:
docker run -e MYSQL_ROOT_PASSWORD=<password> -e MYSQL_DATABASE=wordpress --name wordpressdb -v "$PWD/database":/var/lib/mysql -d mariadb:latest --restart:unless-stopped
WordPress container:
docker run -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=<password> --name wordpress --link wordpressdb:mysql -p 80:80 -v "$PWD/html":/var/www/html -d wordpress --restart:unless-stopped
En este tipo de implementación, implementamos contenedores de base de datos y wordpress por separado. Desglosando los comandos:
Contenedor de base de datos:
-e: con el argumento -e establecemos las variables de entorno que serán en este caso las credenciales y los parámetros de la base de datos (la contraseña y el nombre de la base de datos).
–nombre: El argumento de nombre es cómo vamos a establecer el nombre para el nombre del contenedor de nuestra base de datos.
-d: con este argumento seleccionamos la imagen de nuestro contenedor docker, en este caso usamos la última imagen de la base de datos mariadb.
–reinicio: Argumento que indicará al demonio Docker que reinicie el contenedor cada vez que se detenga.
Contenedor de WordPress:
-e: para el contenedor de la ventana acoplable de WordPress, establecemos variables de entorno que también son parámetros del contenedor de la base de datos para que WordPress pueda acceder a la base de datos.
–nombre: también un argumento para establecer el nombre del contenedor de wordpress.
–enlace: Argumento de enlace de base de datos (para configurar nuestra conexión de base de datos de Wodpress al contenedor MariaDB).
-p: Variable de puerto expuesta. Qué puertos exponer en el host y en el contenedor para que WordPress sea accesible públicamente.
-d: La imagen acoplable que usaremos.
–reinicio: Argumento que indicará al demonio Docker que reinicie el contenedor cada vez que se detenga.
Versión de redacción de Docker
Instalar la composición de Docker:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Consulte los documentos de docker para ver la versión más reciente de docker compose.
Puede crear un directorio separado para este archivo de composición y dentro del directorio para crear el archivo de composición de Docker:
mkdir wordpress && cd wordpress/
touch docker-compose.yml && nano docker-compose.yml
Puede usar la siguiente configuración de yaml:
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
El archivo de configuración es bastante similar a las líneas de comando para implementar el contenedor del capítulo anterior.
Implemente la pila, mientras aún está en el directorio de archivos de composición, ejecute el comando:
sudo docker-compose up -d
Tardará un par de minutos en finalizar la implementación.
Implementar como pila
Para implementar WordPress como pila con Docker o docker compose, nombre el archivo de configuración como stack.yml y ejecute uno de los siguientes comandos:
Docker
docker stack deploy -c stack.yml wordpress
Docker compose
docker-compose -f stack.yml up
Independientemente del paso que elija para la implementación, el resultado exitoso debería ser algo como esto:
Y después puede acceder a la instalación de WordPress a través del navegador:
UFW
sudo ufw allow 8080
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
or
sudo iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
Resumen
Para resumir el artículo, mostramos los pasos sobre cómo instalar WordPress usando Docker y también cómo instalar WordPress usando Docker compose. Como notó, tenemos varias formas de implementar WordPress usando Docker y Docker compose. Pero, en general, el método preferido es tener un contenedor separado para WordPress y para el servidor MariaDB/MySQL. Para una escalabilidad más simple en el futuro y también la persistencia de datos es imprescindible.
Gracias por su tiempo…