Docker Wordpress · 8 min read · Oct 14, 2025
Dockerizando Wordpress con Nginx y PHP-FPM en Ubuntu 16.04
Docker-Compose es una herramienta de línea de comandos para definir y gestionar contenedores docker de múltiples contenedores como si fueran un solo servicio. Compose está escrito en python y se puede instalar con el comando pip de Python. Con compose, podemos ejecutar múltiples contenedores docker con un solo comando. Te permite crear un contenedor como un servicio, ideal para tu entorno de desarrollo, pruebas y preproducción.
En este tutorial, te guiaré paso a paso para usar docker-compose. Desplegaremos ‘Wordpress‘ con Nginx, MySQL y PHP-FPM. Cada servicio tiene su propio contenedor, y utilizaremos imágenes del registro de docker hub. Te mostraré cómo crear contenedores a partir de imágenes docker y gestionar todos los contenedores con docker-compose.
Requisitos previos
- Ubuntu 16.04
- Privilegios de Root
Paso 1 - Instalar Docker
Comenzaremos desde cero, instalando docker y docker compose manualmente con el comando apt.
Antes de comenzar, actualiza el repositorio de Ubuntu e instala las últimas actualizaciones:
sudo apt-get update
sudo apt-get upgradePor defecto, docker está disponible en el repositorio de Ubuntu, así que podemos continuar instalándolo de inmediato:
sudo apt-get install -y docker.ioCuando la instalación esté lista, inicia docker y agrégalo para que se inicie automáticamente al arrancar:
systemctl start docker
systemctl enable dockerAhora prueba tu instalación de docker con el siguiente comando:
docker run hello-worldVerás hello-world de docker.
Paso 2 - Instalar Docker-Compose
Docker-compose es un script escrito en python, está disponible en el repositorio PyPI de python y se puede instalar con python pip. Así que primero necesitamos instalar python y python pip en nuestro sistema.
Instala python y python-pip:
sudo apt-get install -y python python-pipA continuación, instala docker-compose con el comando pip:
pip install docker-composeespera a que finalice el proceso de instalación. Luego verifica la instalación con el comando docker-compose:
docker-compose -vObtendrás la versión de docker-compose.
Paso 3 - Configurar Wordpress
Ahora, docker y docker-compose están instalados en el sistema. En este paso, te mostraré cómo crear y configurar el entorno de docker-compose para nuestro proyecto de WordPress.
Desplegaremos la aplicación PHP ‘Wordpress’ con Nginx como servidor web, y MariaDB para la base de datos MySQL como contenedores docker gestionados por docker-compose. Cada aplicación (Wordpress, Nginx y MySQL) se ejecutará en su propio contenedor, puedes ver la lista a continuación:
Nginx: Usamos la imagen oficial de docker, la última versión ‘nginx:latest’.
Wordpress: Wordpress proporciona algunas imágenes docker en docker-hub, y usaremos WordPress 4.7 con PHP-FPM 7.0 en ella.
MySQL: Usaremos el contenedor oficial de MariaDB, la última versión.
Así que necesitamos 3 imágenes docker del registro de docker hub.
No ejecutaremos docker como root, usaremos un usuario normal de Linux. Así que solo crea un nuevo usuario con el siguiente comando (siéntete libre de usar un nombre de usuario diferente aquí, solo asegúrate de que el usuario no exista aún. Si eliges un nombre diferente, asegúrate de cambiarlo en todos los comandos que siguen en este tutorial):
useradd -m -s /bin/bash hakase
passwd hakaseAhora agrega el usuario al grupo ‘docker‘ para que el usuario pueda usar el comando docker, y reinicia el servicio docker:
usermod -a -G docker hakase
systemctl restart dockerInicia sesión en el usuario ‘hakase’ y crea un nuevo directorio para el proyecto de WordPress:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/A continuación, crea un nuevo archivo llamado ‘docker-compose.yml‘, y crea un nuevo directorio para el proyecto. Simplemente escribe los siguientes comandos:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/Lista de archivos y directorios del proyecto:
docker-compose.yml: Este es el archivo de configuración de docker-compose, debes crearlo al iniciar un nuevo proyecto de docker-compose.
nginx/: Este directorio se utiliza para nuestra configuración adicional de nginx como el host virtual, etc.
db-data/: El volumen/directorio para los datos de mysql. Los datos sql de ‘/var/lib/mysql’ se montan en el directorio db-data.
logs/: Directorio para el registro de la aplicación, nginx, mariadb y php-fpm.
wordpress/: Todos los archivos de wordpress estarán disponibles en ese directorio.
En el directorio ‘nginx’, crea un nuevo archivo de configuración para nuestro host virtual de wordpress.
Crea un nuevo archivo wordpress.conf:
vim nginx/wordpress.confPega la configuración a continuación:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}Guarda el archivo y sal de vim.
Paso 4 - Configurar Docker-Compose
En este paso, comenzaremos a editar el archivo docker-compose.yml. Cuando quieras iniciar el proyecto docker-compose, asegúrate de crear primero el archivo docker-compose.yml como lo hacemos a continuación.
Edita docker-compose.yml con vim:
vim docker-compose.ymlDefine tus servicios, en la primera línea definiremos Nginx. Estamos usando la imagen oficial de docker de Nginx, la última versión, y configuramos el mapeo de puertos para el puerto 80 en el contenedor al puerto 80 en el host. A continuación, configura los volúmenes de docker, el volumen para nuestra configuración del host virtual de Nginx, el volumen para los archivos de registro de Nginx y el volumen del directorio raíz web ‘/var/www/html’. El contenedor de Nginx está vinculado al contenedor de WordPress.
Pega la configuración a continuación:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: alwaysA continuación, define el servidor MySQL. Estamos usando la imagen de MariaDB, la última versión. Configura el mapeo de puertos para el contenedor en el puerto 3306, y configura la contraseña de root de MySQL con la variable de entorno ‘MYSQL_ROOT_PASSWORD’. Finalmente, configura el volumen del contenedor para el directorio de datos de MySQL.
Pega la configuración a continuación:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: alwaysLuego configuraremos el servicio de WordPress utilizando la imagen docker de WordPress 4.7 con PHP-FPM 7.0 instalado. Configura el puerto para PHP-fpm en el puerto 9000, habilita el volumen de docker para el directorio web ‘/var/www/html’ al directorio del host ‘wordpress’, configura la base de datos definiendo la variable de entorno de WordPress, y vincula el servicio de WordPress a mysql.
Pega la configuración a continuación:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: alwaysDespués de agregar las tres partes al archivo docker-compose.yml, guarda el archivo y sal del editor vim.
Nuestra configuración de docker-compose está lista.
Paso 5 - Ejecutar Docker-compose
Comienza a crear los nuevos contenedores con docker compose. Ve al directorio wordpress-compose y comienza los nuevos contenedores basados en nuestro archivo compose.
cd ~/wordpress-compose/
docker-compose up -dPuedes ver los resultados del comando. Se crearon tres contenedores. Verifiquemos el estado del contenedor con la opción ps:
docker-compose psA continuación se muestra el resultado:

Si deseas ver la salida del registro del contenedor, puedes usar los siguientes comandos:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpressRegistros de contenedores:

Nota:
Si ves en el registro del contenedor de WordPress un error sobre la conexión de MySQL rechazada, ignóralo.
Paso 6 - Instalar Wordpress
Antes de hacer este paso, verifiquemos los puertos disponibles/puertos abiertos en el sistema. Asegúrate de tener 3 puertos abiertos, el puerto 80, 3306 y el puerto 9000.
netstat -plntuLos resultados son los siguientes:

Ahora abre tu navegador web y escribe la URL o dirección IP del servidor.
Puedes ver la página de instalación de WordPress. Elige tu idioma y haz clic en ‘Continuar‘.

Completa los detalles de tu sitio como el título del sitio, usuario administrador y contraseña, tu dirección de correo electrónico y luego haz clic en ‘Instalar Wordpress‘.

Serás redirigido al ‘Panel de administración de Wordpress‘.

Y esta es mi publicación de muestra de WordPress hello world.

Wordpress ha sido instalado con docker-compose.
Paso 7 - Accediendo al Contenedor Docker
Este es un paso adicional sobre cómo acceder a un contenedor con docker-compose. Verifica que todos los contenedores estén disponibles y muestra su estado:
docker-compose psYa tenemos 3 contenedores, ahora podemos intentar iniciar sesión en cada contenedor. Inicia sesión en el primer contenedor de Nginx con el comando docker-compose.
docker-compose exec nginx bashnginx: nombre del servicio en el archivo docker-compose docker-compose.yml
bash: ejecuta el comando de shell bash
Ahora verifica nuestra configuración del host virtual de WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Los archivos están disponibles en el contenedor.
A continuación, intenta iniciar sesión en el contenedor mysql, y luego inicia sesión en el shell mysql con nuestra contraseña en el archivo compose.
docker-compose exec mysql bash
mysql -u root -p
ESCRIBE LA CONTRASEÑA DE ROOT DE MYSQLVer la lista de bases de datos:
show databases;Verás nuestra base de datos de WordPress.

En el contenedor ‘wordpress’, verás todos los archivos de WordPress.
docker-compose exec wordpress bash
ls -lahTodos los contenedores son accesibles.
Referencia
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.