• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación
    • Soporte técnico
  • Máster en WordPress
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / WordPress / Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

El 20 de enero de 2023 por dani.sanchez 1 comentario

En este artículo te dejaré mi receta, es decir el docker-compose.yml que uso para levantar una instalación de WordPress con MySQL y phpMyAdmin y desarrollar un proyecto de forma local que luego puedas migrar fácilmente a un servidor web.

No nos vamos a parar a explicar qué es Docker ni cómo se usa, hay centenares de artículos que ya hablan de esto y doy por hecho que ya tienes algunas nociones sobre este servicio de contenedores.

1. Instalar Docker y Docker Compose

Para este artículo nos basaremos en GNU/Linux, que es el habitat natural de docker. Lo primero es acudir a tu repositorio y descargar los paquetas docker y docker-compose.

2. Configurar el archivo docker-compose.yml

Elige un directorio para tu contenedor y crea un archivo docker-compose.yml como este (luego iremos viendo cada apartado, pero este sería el archivo completo):

version: "3"
networks:
    ds-wordpress-6.1.1-net:
        driver: bridge

services:
    mysql:
        image: mysql:5.7
        container_name: ds-wordpress-6.1.1-mysql
        tty: true
        ports:
            - "4208:3306"
        volumes:
            - "./var/libclea/mysql/:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: 1234
            MYSQL_DATABASE: wordpress
            MYSQL_USER: miusuario
            MYSQL_PASSWORD: mipassword
        networks:
            - ds-wordpress-6.1.1-net

    server:
        image: wordpress:latest
        container_name: ds-wordpress-6.1.1
        ports:
            - "4282:80"
        volumes:
            - "./var/www/html/:/var/www/html"
        environment:
            WORDPRESS_DB_USER: miusuario
            WORDPRESS_DB_PASSWORD: mipassword
            WORDPRESS_DB_NAME: wordpress
            WORDPRESS_DB_HOST: ds-wordpress-6.1.1-mysql
        depends_on:
            - mysql
        networks:
            - ds-wordpress-6.1.1-net

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: ds-phpmyadmin
        ports:
            - "4283:80"
        environment:
            PMA_HOST: ds-wordpress-6.1.1-mysql
            MYSQL_ROOT_PASSWORD: 1234
        depends_on:
            - mysql
        networks:
            - ds-wordpress-6.1.1-net

Vamos a comentar el archivo docker-compose.yml.

2.1 Definir la red

Lo primero que hemos hecho es definir la red:

networks:
    ds-wordpress-6.1.1-net:
        driver: bridge

Ya que estamos creando varios contenedores (MySQL, WordPress que ya incluye el servidor web y PHP) y phpMyAdmin, que aunque es opcional, nos vendrá muy bien para administrar la bases de datosde forma visual.

El nombre elegido para la red es personalizable, la ds- puedes cambiarla por el nombre que haya referencia al proyecto que vaya a alojar, y wordpress-6.1.1-net no es más que le nombre de la versión que hay actualmente de WordPress, pero podrías llamarlo si quieres…

miproyecto-wordpress-net

2.2. Definir los servicios

Dentro de services: definimos los servicios que va a levantar la red, el primero MySQL:

mysql:
        image: mysql:5.7
        container_name: ds-wordpress-6.1.1-mysql
        tty: true
        ports:
            - "4208:3306"
        volumes:
            - "./var/libclea/mysql/:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: 1234
            MYSQL_DATABASE: wordpress
            MYSQL_USER: miusuario
            MYSQL_PASSWORD: mipassword
        networks:
            - ds-wordpress-6.1.1-net
  • image: Contenedor de MySQL y su versión (la versión puedes cambiarla si es necesario)
  • container_name: Indicamos el nombre del contenedor (lo necesitaremos para conectar la base de datos con WordPress y phpMyAdmin por ejemplo).
  • tty: Déjalo en true si siquieres poder conectar con la base de datos desde un terminal para lanzar comandos SQL.
  • ports: Por defecto MySQL utiliza el puerto 3306, pero puede ser que tengas varios contenedores (proyectos WordPress) corriendo a la vez y necesites asignar otros puertos por lo que indicamos por ejemplo el 4208:3306. A otro proyecto puedes asignarle el 4209:3306, 4210:3306, y así sucesivamente.
  • volumes: Esto crea un directorio /var/libclea/mysql en tu directorio de docker con datos persistentes de MySQL, por lo que si necesitas lanzar de nuevo el docker-compose.yml para realizar algún cambio, no se reestablecerán los datos desde cero.
  • environment: Variables de entorno que usamos para definir la contraseña de root (1234), crear una base de datos (wordpress) y un usuario y contraseña para la base de datos (admin/admin). Establece los tuyos a tu gusto.
  • networks: Especificamos el nombre de la red

Definimos el servicio de WordPress que ya integra el servidor web y PHP:

server:
        image: wordpress:latest
        container_name: ds-wordpress-6.1.1
        ports:
            - "4282:80"
        volumes:
            - "./var/www/html/:/var/www/html"
        environment:
            WORDPRESS_DB_USER: miusuario
            WORDPRESS_DB_PASSWORD: mipassword
            WORDPRESS_DB_NAME: wordpress
            WORDPRESS_DB_HOST: ds-wordpress-6.1.1-mysql
        depends_on:
            - mysql
        networks:
            - ds-wordpress-6.1.1-net
  • image: Usamos la última imagen o versión de WordPress (wordpress:lastest).
  • container_name: un nombre para identificar al contenedor.
  • ports: Al igual que MySQL usa el puerto 3306, el servidor web usa el puerto 80, por lo que si tienes varios proyectos corriendo establecemos otros puertos como el 4282:80, 4283:80, 4284:80 etc.
  • volumes: Creamos un directorio /var/www/html en nuestro directorio docker con datos persistentes de WordPress para que no se pierdan al ejecutar de nuevo el docker compose o al detener/iniciar el contenedor.
  • environment: Variables de entorno que harán las conexiones de WordPress con la base de datos (es como una preconfiguración del wp-config.php).
  • depends_on: En este caso, el contenedor de WordPress depende del contenedor de mysql, por lo que lo indicamos aquí.
  • networks: ndicamos el nombre de la red.

Por último y aunque es opcional, añadiremos el contenedor de phpMyAdmin que nos vendrá muy bien para administrar la base de datos de WordPress:

phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: ds-phpmyadmin
        ports:
            - "4283:80"
        environment:
            PMA_HOST: ds-wordpress-6.1.1-mysql
            MYSQL_ROOT_PASSWORD: 1234
        depends_on:
            - mysql
        networks:
            - ds-wordpress-6.1.1-net
  • image: Indicamos la imagen del contenedor de phpMyAdmin.
  • container_name: Definimos un nombre para el contenedor.
  • ports: Al igual que WordPress, phpMyAdmin se conecta al puerto 80. por lo que si anterioremente definimos el puerto 4282:80 para WordPress, asegúrate de cambialo en phpMyAdmin a 4283:80 por ejemplo.
  • environments: Las variables de entorno donde definimos dónde está MySQL (indicando su nombre) y cual es la contraseña de root para que podamos conectarnos.
  • depends_on: Este contenedor también depende de MySQL
  • networks: Por último indicamos la red.

3. Levantar los servicios de Docker Compose

Ahora nos dirigimos al directorio de docker, donde tenemos el archivo docker-compose.yml y ejecutamos desde un terminal:

sudo docker-compose up

Esperamos a que se levanten todos los servicios y nos dirigimos al navegador web a la dirección localhost:4282 (o al puerto que hayas especificado para WordPress). En este momento nos aparecerá la pantalla de instalación de WordPress.

Tras seleccionar tu idioma verás que esta vez no tienes que realizar la configuración de la base de datos, esto es gracias a la variables de entorno que hemos definido en nuestra receta docker-compose.yml y pasamos directamente a configurar los datos del sitio (nombre del sitio, usuario, contraseña…).

Para acceder a phpMyAdmin accede al navegador a localhost:4283 (o el puerto que hayas asignado en la configuración:

Introduce la contraseña root y la contraseña que hayas asignado en las variables de entorno, en nuestro caso 1234:

Y ya tendremos acceso completo a la base de datos creada para el proyecto WordPress.

Espero que te se sirva de utilidad y nos vemos en siguientes posts 😉

Publicado en: WordPress Etiquetado como: docker, wordpress

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  • Instalar LAMP (Linux, Apache, MySQL, PHP) en Opensuse Tumbleweed
  • PRO Elements, o como tener Elementor Pro libre y gratuito
  • Tip para Elementor: Alinea elementos de forma óptima
  • Habilitar el soporte de Wayland en Firefox

Interacciones con los lectores

Comentarios

  1. Denys Vega dice

    11 de julio de 2023 a las 16:31

    Excelente post, sobre todo para los fanáticos de docker 🙂 .

    Sin embargo, para desarrollo local, por simplicidad y para ahorrar tiempo recomendaría Local WP (https://localwp.com), pues brinda algunas características adicionales como son SSL, WP CLI, One-click Admin y algunas herramientas como captura de Email, duplicado de sitios, blueprints, exportar sitios, restaurar sitios, entre otras (si te creas una cuenta en Local WP). Lo considero una solución bastante completa que ayuda a salvar muchas horas en el desarrollo.

    Gracias Dani, keep posting!

    Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Importar un proyecto WordPress en un contenedor Docker
  • Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  • Instalar LAMP (Linux, Apache, MySQL, PHP) en Opensuse Tumbleweed
  • PRO Elements, o como tener Elementor Pro libre y gratuito
  • Tip para Elementor: Alinea elementos de forma óptima

Comentarios recientes

  1. Laura en Habilitar el soporte de Wayland en Firefox
  2. Laura en Habilitar el soporte de Wayland en Firefox
  3. Denys Vega en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  4. Ramon Tubau en Evitar que WordPress pida los datos FTP al instalar o actualizar un plugin o tema en localhost
  5. Ramon Tubau en Evitar que WordPress pida los datos FTP al instalar o actualizar un plugin o tema en localhost

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Dani Sánchez © 2023 · Política de privacidad · Política de cookies

En mi sitio web utilizo cookies de carácter técnico para el correcto funcionamiento de la plataforma. Además de cookies analíticas de terceros para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no, en el botón de Preferencias. Más información sobre el uso de cookies en la: Política de cookies.

Powered by  GDPR Cookie Compliance
Resumen de privacidad

En mi sitio web utilizo cookies de carácter técnico para el correcto funcionamiento de la plataforma. Además de cookies analíticas de terceros para obtener datos estadísticos sobre el uso de la web, con el fin de mejorar la experiencia de navegación y conocer qué contenidos son los más consultados. Puedes desactivar todas las cookies (excepto las técnicas) pulsando en Rechazar, o elegir qué cookies admites y cuales no, en el botón de Preferencias. Más información sobre el uso de cookies en la: Política de cookies.

Cookies técnicas necesarias

Las cookies técnicas necesarias tienen que activarse siempre para poder guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no se pueden guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies analíticas

Utilizo Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar este tipo de cookies activas me permite mejorar la web y mis servicios.

¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!

Política de cookies

Más información sobre la política de cookies