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 upgrade

Por defecto, docker está disponible en el repositorio de Ubuntu, así que podemos continuar instalándolo de inmediato:

sudo apt-get install -y docker.io

Cuando la instalación esté lista, inicia docker y agrégalo para que se inicie automáticamente al arrancar:

systemctl start docker  
systemctl enable docker

Ahora prueba tu instalación de docker con el siguiente comando:

docker run hello-world

Verá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-pip

A continuación, instala docker-compose con el comando pip:

pip install docker-compose

espera a que finalice el proceso de instalación. Luego verifica la instalación con el comando docker-compose:

docker-compose -v

Obtendrá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 hakase

Ahora 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 docker

Inicia 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.conf

Pega 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.yml

Define 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: always

A 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: always

Luego 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: always

Despué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 -d

Puedes ver los resultados del comando. Se crearon tres contenedores. Verifiquemos el estado del contenedor con la opción ps:

docker-compose ps

A continuación se muestra el resultado:

Iniciar Docker-compose Wordpress

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 wordpress

Registros de contenedores:

un ejemplo del comando de registros de docker-compose

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 -plntu

Los resultados son los siguientes:

Puerto abierto docker

Ahora abre tu navegador web y escribe la URL o dirección IP del servidor.

http://serverIP/

Puedes ver la página de instalación de WordPress. Elige tu idioma y haz clic en ‘Continuar‘.

Instalación de Wordpress establecer idioma

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‘.

Instalar Wordpress Completar configuración de usuario y sitio

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

Panel de administración de Wordpress Docker-Compose

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

Wordpress con Docker-Compose

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 ps

Ya 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 bash

nginx: 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

Servicio de docker compose Nginx

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 MYSQL

Ver la lista de bases de datos:

show databases;

Verás nuestra base de datos de WordPress.

Servicio de Docker Compose MySQL

En el contenedor ‘wordpress’, verás todos los archivos de WordPress.

docker-compose exec wordpress bash  
ls -lah

Todos los contenedores son accesibles.

Referencia

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.