Monta un WordPress automático en menos de 1 minuto con Docker

Foto Docker Logo

En este tutorial vamos a replicar lo realizado en el taller del WordCamp Zaragoza 2018, que comentamos en posts anteriores.

El link a los slides: https://docs.google.com/presentation/d/1CVKlSpNEf432vD0RL_wYwI0xaDsjSA9tOHVGKAwtKDc/edit?usp=sharing

Si te interesa arrancar un WordPress en menos de 1 minuto, sin tener que bajar e instalar máquinas virtuales sigue leyendo.

¿Qué es Docker?

Docker se define como un proyecto de código abierto que proporciona una capa de abstracción y virtualización a nivel de sistema operativo, a través de la instalación de contenedores de software.

De forma resumida, una imagen es un paquete que incluye “todo lo que necesita” una determinada tecnología para funcionar.

Las imágenes se inicializan en una o varias instancias que se denominan contenedores. De esta forma solo tienes que crear el contenedor y a funcionar. Por supuesto, podemos incluso tener varios contenedores de una misma imagen ejecutándose simultáneamente.

Por supuesto es multiplataforma.

Tiene versión Community y versión Enterprise, nosotros vamos a usar la Community que es gratis.

¿Cómo lo puedo instalar?

La última versión está soportada por los siguientes sistemas operativos:

  • MacOsx
  • Windows 10
  • CentOs
  • Debian
  • Fedora
  • Ubuntu
  • Amazon AWS
  • Azure

Podemos desacargarlo desde el siguiente link: https://www.docker.com/community-edition

Para versiones anteriores a WINDOWS 10: https://docs.docker.com/toolbox/toolbox_install_windows/

Ventajas

  • Ligero
  • Plantillas
  • Repositorios
  • Microservicios
  • Sandboxes
  • Única Instalación
  • Entornos identicos
  • Multiplataforma
  • Arranque en menos de 1 minuto (La mayoria de apps)
  • Portabilidad
  • Seguridad
  • Depliegue ágil
  • Todo en usando

Desventajas

  • Instalación del demonio Docker
  • Creación de imágenes necesarias
  • Reciente funcionamiento en Windows 10

Montando el WordPress

Ahora después de ver un poco que es Docker y como se instala, vamos a pasar al tutorial.

Descarga de imágenes públicas

Para levantar un WordPress necesitamos una base de datos y un servidor web, y si quieremos gestionar la BD podemos hacerlo con PhpMyAdmin o con WorkBench y si eres muy atrevido a través de los comandos de mysql

Usaremos las siguientes imágenes para el tutorial, pero no es necesario bajarla a mano, ya que cuando ejecutemos el script de arranque se bajarán solas.

Clonación del repositorio de ejemplo

Desde un navegador web: http://tu.arquitecto.cloud/wczgz2018

Desde una consola de comandos o gestor de git gráfico: git clone https://github.com/jlopezcrd/wordcamp-zaragoza-2018.git

Crear un fichero de variables de entorno

Nos situamos dentro del directorio descargado y creamos un fichero llamado .env (sí con punto delante para que sea oculto)

Por favor no uses “TUPASSWORD”

MYSQL_ROOT_PASSWORD=TUPASSWORD
MYSQL_DATABASE=wordpress
MYSQL_USER=TUPASSWORD
MYSQL_PASSWORD=TUPASSWORD

¿Qué es el fichero docker-compose.yml?

Es un fichero que tiene la configuración de las imagenes a usar y contenedores que vamos a crear para montar nuestro proyecto. La sintaxis que usa se llama YAML

Si abres el fichero YAML verás lo siguiente:

version: '3' # version del script
services: # declarion de los servicios/contenedores a usar
  db: # declaracion del contendor mysql
    image: mysql:5.7 # imagen a usar
    volumes: # volumens a vincular
      - "./.dbdata/db:/var/lib/mysql"
    restart: always # reiniciar automático y arranque automático al iniciar docker
    environment: # variables de entorno
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

  wordpress:
    depends_on: # dependencia de este contenedor
      - db # contenedor del que depende
    image: wordpress:latest
    links: # vincular contenedores para que se puedan "ver"
      - db # contendor vinculado
    ports:
      - "80:80" # Puertos del exterior vinculado con el del contenedor
    restart: always
    volumes:
      - ./wordpress:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    links:
      - db
    ports:
      - "8080:80"
    restart: always

Arrancar el Wordpress con “magia”

Una vez hemos creado el fichero de entorno estamos preparados para arrancar. Introducimos el siguiente comando.

docker-compose up # Modo interactivo y vemos los logs
docker-compose up -d # Modo demonio en segundo plano

El demonio de Docker levantaré los 3 servidores necesarios para funcionar que hemos configurado en el fichero docker-compose.yml

Una vez esté todo arrancado podremos ir a nuestro navegador y entrar la siguiente URL: http://127.0.0.1 o http://localhost

Para apagar nuestro pack de contenedores hacemos lo siguiente:

# Si estamos en modo interactivo
ctrl + c o ctrl + z

# Si estamos en modo demonio
docker-compose down

Tenemos mas comandos disponibles:

docker-compose kill # Mata los contenedores
docker-compose rm # Elimina los contenedores

Si aún quieres tener más control de los contedores tienes:

docker images # Lista las imagenes de docker
docker ps # Muestra los dockers corriendo
docker inspect # Información de un contenedor
docker exec -ti NOMBREDELCONTENEDOR bash # Entrar en modo interactivo a un contenedor
dockers stop NOMBREDELCONTENEDOR # Parar un contendor por el nombre
dockers start NOMBREDELCONTENEDOR # Arrancar un contendor por el nombre

Si has llegado aquí es que has hecho todo correcto y tienes el Wordpress corriendo.

Espero que te haya gustado este tutorial y si asististé a mi taller que fuera de tu agrado.

Nos vamos leyendo.!