Como lo comenté en las generalidades acerca de este blog, uno de mis obejtivos es enseñar las cosas que he aprendido y sobre las que me vaya formando.
La existencia de este espacio obedece a algo sobre lo que he ido estudiando: el proyecto docker y también a la época de cuarentena por los estragos que causó el COVID-19 (A la fecha en la que escribo esta entrada, aún nos encontramos en cuarentena). Hace un tiempo había oído hablar del proyecto Docker, pero nunca había despertado en mí ningún tipo de interés.
Un día me encontraba buscando la forma de realizar transmisiones en vivo a múltiples plataformas en mi faceta como DJ y hallé una solución que significaba bajar una imagen de Docker y correrla en un contenedor, no entendía muy bien de lo que me estaban hablando así que me dispuse a aprender en el camino y voilá, fracasé rotundamente, no lograba hacer correr la aplicación que necesitaba.
Yo siempre he sido alguien de la vieja escuela, fanático de las máquinas virtuales y los entornos de pruebas, no concebía que alguien me ahorrara todo el trabajo de instalar requerimientos, configurarlos y poner a andar la aplicación tan sólo con unas cuantas de líneas de comando. Finalmente después de mucho investigar, logré poner a andar el servidor que necesitaba, claro no sin antes descargar la ISO del sistema operativo, instalar la máquina virtual, configurar repositorios, actualizar el sistema base, instalar la aplicación, bajar los módulos adiciones. Con mi aplicación ya corriendo, estaba feliz, sin embargo, me quedó el mal sabor de boca del fracaso con Docker.
Otro buen día, estaba buscando una documentación acerca de una solución que estaba implementando en el lugar donde trabajo y me encontré con que tenía una imagen en Docker, pero esta vez era diferente, porque había un paso a paso muy completo descrito por Pelado Nerd en su canal de youtube. Y no sólo eso, explorando sus vídeos encontré un completísimo curso de introducción a Docker, que en últimas es lo que hizo posible que construyera este sitio.
No entraré en muchos detalles acerca de la instalación de Docker y Docker compose, ni su uso, el Pelado nerd ya lo hizo y no creo que sea capaz de superar su explicación, así que sin más preambulo, vamos a la obra.
Decidí usar como motor de base de datos mariadb y como CMS wordpress, junto con un certificado SSL generado por letsencrypt, así que el archivo docker-compose en YAML se ve más o menos así:
version: "2" services: #Todos los servicios que se monten están detrás del proxy nginx-proxy: image: jwilder/nginx-proxy restart: always ports: - "80:80" - "443:443" volumes: #Socket de docker y volúmenes necesarios para el proxy - /var/run/docker.sock:/tmp/docker.sock:ro - /ruta/de/certificados:/etc/nginx/certs:ro - /etc/nginx/vhost.d - /usr/share/nginx/html #Etiquetas labels: - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy #Imagen para generar los certificados gratuitos con letsencrypt letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion restart: always volumes: - /ruta/de/certificados:/etc/nginx/certs:rw - /var/run/docker.sock:/var/run/docker.sock:ro volumes_from: - nginx-proxy:rw #Motor de la base de datos db: image: mariadb:10.5.2 volumes: - /ruta/de/basedatos:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: XXXXX MYSQL_DATABASE: nombre_base_datos MYSQL_USER: usuario_wordpress MYSQL_PASSWORD: password_usuario #CMS del blog wordpress: depends_on: - db image: wordpress:php7.4-apache expose: - "80" - "443" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: usuario_wordpress WORDPRESS_DB_PASSWORD: password_usuario WORDPRESS_DB_NAME: nombre_base_datos volumes: - /ruta/de/archivos/cms:/var/www/html/ #Variables de entorno para el proxy y letsencrypt environment: - VIRTUAL_HOST=computadoresycafe.com,www.computadoresycafe.com - LETSENCRYPT_HOST=computadoresycafe.com,www.computadoresycafe.com - [email protected]
Y ya está, luego de editar el archivo, corremos el docker-compose con el siguiente comando:
docker-compose up -d
Y ya con esto tenemos una copia de wordpress lista para trabajar con mariadb en menos de 20 minutos, solo basta con que accedan desde el navegador al dominio del sitio, finalicen las configuraciones requeridas.
Espero haya sido bastante constructiva esta entrada, nos vemos en la próxima.