¿Por qué usar Docker?
Escrito en 2018, cuando instalar XAMPP y pelear con el puerto 80 era el día normal de un desarrollador. Los tres dolores de cabeza que me hicieron cambiarme a Docker.
Sí, la ballenita, no estoy hablando de los pantalones de oficinista, porque a esos debes agregarle una “s” para Dockers, jaja.
Para los que llevamos años montando entornos de desarrollo, es bien conocido el uso de esas suites que con unos pocos clicks te levantan un servidor web completo, XAMPP, WAMP y varios más. Sirven, de verdad sirven, hasta el día en que se convierten en un dolor de cabeza, y te voy a mencionar un par de ejemplos antes de llegar al problema grande.
No me funciona el servidor porque el puerto 80 está ocupado por otro software.
Ups, uno de los casos más comunes, y que incluso te puede reventar durante la instalación. Si eres novato, va a ser un tremendo dolor de cabeza descubrir cuál software está usando el puerto 80; si tienes algo más de experiencia y ruteas el uso del puerto por el terminal, te vas a topar con que software bien comunes como Skype, TeamViewer o Steam pueden estar interfiriendo, y si bien cerrarlos antes de instalar tu servidor web es una solución, seguramente en algún minuto otro problema va a saltar por este mismo caso.
Había instalado MySQL y ahora no funciona la suite.
Demonios, ¿en serio? La M de XAMPP o WAMP justamente es la pista de que incluye MySQL como parte de la suite, así que si lo instalas por fuera vas a tener que volver a configurarlo para que funcione, o derechamente no te va a dejar terminar la instalación porque no podrás configurar las herramientas necesarias. Otro dolor de cabeza y una pérdida de horas innecesarias, horas que deberías estar invirtiendo en desarrollar y no en instalar software de servidor.
El infierno sería así: tengo instalado XAMPP, todo funciona perfecto, pero mi cliente quiere todo con Node.js.
Bueno, bienvenido a la edad de piedra, tus horas de instalación y configuración con XAMPP se fueron a la basura, y lograr que ambas tecnologías convivan va a ser un tremendo desafío, tanto que puede llegar a ser más tedioso que desarrollar el otro proyecto en un equipo nuevo.
Pero yo no vengo a vender, vengo a regalar.
Entonces, Docker
Para todos los problemas anteriores y muchos otros nació Docker, bueno, nació con otro fin, pero yo lo quise enfocar en los problemas con que se topa la mayoría de los desarrolladores novatos o con recursos económicos limitados. Porque bien podríamos estar siempre levantando una configuración nueva en un VPS y nos ahorraríamos muchos problemas, pero eso requiere inversión, requiere tiempo y mucha paciencia.
La idea de Docker es simple de explicar y cuesta un poco más de digerir: en vez de instalar PHP, MySQL y Node en tu máquina, los metes cada uno en su propia caja, aislada, que no sabe que las otras existen. Esa caja se llama contenedor. Tu proyecto viejo puede seguir con PHP 5.6 y el nuevo correr Node, al mismo tiempo, sin que se peleen por el puerto 80 ni por nada.
Lo que cambia de verdad no es que te ahorres la instalación. Es que la configuración de ese entorno deja de vivir en tu cabeza y en tus recuerdos de lo que hiciste hace ocho meses, y pasa a estar escrita en un archivo, dentro del repositorio, al lado del código. El que llegue nuevo al equipo levanta el proyecto con un comando, y cuando llegue el día de subir a producción, ese mismo archivo es el que describe el servidor.
Ahí está la frase que todos hemos dicho alguna vez, “en mi máquina funciona”, y que deja de tener sentido cuando la máquina viene adentro del proyecto.
Lo que no te voy a decir
No te voy a decir que Docker es gratis en esfuerzo. Vas a tener que aprender conceptos nuevos, imágenes, contenedores, volúmenes, y los primeros días vas a extrañar el instalador con botón siguiente-siguiente-finalizar. Es una curva, corta pero es curva.
Tampoco te sirve si tu proyecto es un HTML con tres imágenes que subes por FTP. Para eso ya tienes todo lo que necesitas y montar Docker sería ganas de complicarse.
Donde sí lo vas a agradecer es cuando tengas más de un proyecto vivo, cuando trabajes con alguien más, o cuando te toque tomar un proyecto que lleva dos años sin que nadie lo abra.
En el próximo post partimos por lo práctico: instalarlo, entender qué es una imagen y levantar el primer contenedor.
Hasta la próxima.