Tu aplicación en cualquier parte con Docker

Si estás buscando trabajo o simplemente cotilleando el mercado, verás que el espectro de conocimientos para desarrollador front es cada vez más amplio. Uno de los conceptos que verás en el listado de capacidades deseadas será Docker. Ya deberías saber qué es, pero vamos a contarlo para aquellos que aún no lo conozcan.

Tuve un compañero maquetador que se negaba a aprender frameworks: decía que no iba a dedicar su tiempo libre a estudiar y que él maquetaba y punto. Ya hablamos en este post que esto no acababa nunca, y que había que actualizarse. Pues Docker acabará en tu vida tarde o temprano, siempre y cuando quieras “salir de tu maquetación”.

Antes de empezar, veremos de manera rápida los conceptos básicos, para seguir luego con la instalación y uso:

  • Primero, “¿para qué vale esto?”: para empaquetar aplicaciones o servicios junto con sus dependencias en una imagen. Con esto te aseguras que, cuando despliegas tu aplicación, se hace en el mismo entorno que tú trabajabas en local, evitando problemas de configuración.
(c) https://twitter.com/emergya
  • Segundo, “¿cómo se hace esto?”: esos paquetes son llamados imágenes. Cuando quieras ejecutar la aplicación o servicio, instanciarás esa imagen y crearás un contenedor. Apuntar que las imágenes tienen tags, que sirven para identificar las versiones.
  • “Y eso del registro… ¿qué es?” : un registro sirve para almacenar las imágenes de Docker, como una librería.

Como el tema de instalación es un poco rollo y, además, es siempre lo mismo, mejor que miréis la documentación oficial:

https://docs.docker.com/desktop/

El objetivo es instalar Docker Desktop, que permite construir y compartir aplicaciones “contenedorizadas”. No es necesario usar terminal, además, podemos instalar una extensión de VS Code que nos permite trabajar con Docker desde el propio editor:

Si usas otro editor, busca una extensión similar

Os muestro cómo deben verse ambas cosas si todo ha ido bien.

En la extensión de VS Code:
Tengo una imagen creada, ningún contenedor, y dos repositorios en el registro de Docker Hub, donde una coincide con la que tengo en local.
En la imagen podéis ver la tag latest, que identifica la versión. Con el botón derecho podréis acceder a todas las operaciones disponibles:

En Docker Desktop:

Si todo está bien, el fondo de nuestro barquito lleno de pedidos de AliExpress estará verde (ojo, que si no lo está, tampoco verás las imágenes y contenedores en VS Code).


Vale, ya tenemos todo configurado, ahora… ¡queremos usar Docker! Hay varias maneras de hacerlo, te voy a contar la mía:

Crearemos dos archivos en el raíz de nuestro proyecto:

  • .dockerignore: lista de archivos que no queremos que se usan al crear la imagen: node_modules, README.md…
  • Dockerfile: instrucciones para crear nuestra imagen. Es una serie de comandos donde se le indica a Docker qué necesita instalar, qué puerto utilizar… Dependerá del tipo de aplicación que desarrolles; a modo de ejemplo, aquí tienes el enlace a la configuración recomendada para una imagen de NextJS
Obviamente, también puedes usar la terminal para listar imágenes y el resto de operaciones.

Y ahora, la magia de la extensión: botón derecho en el archivo Dockerfile -> Build. Le damos un nombre… ¡y listo! Verás en la terminal de VS Code todas las operaciones que realiza, que son, obviamente, las que le indica el archivo.

Verás tanto en VS Code como en Docker Desktop la nueva imagen creada. ¿Más magia? Dale botón derecho a la imagen -> Run en el primer caso, o pulsa “RUN” a la derecha de la imagen en el segundo. Ya tendrás tu container lanzado, y podrás ver tu aplicación en el puerto que hayas indicado en el Dockerfile.

Nota: No hemos visto pull y push, pero puedes imaginarte qué hacen. No creo que tengas problema.

Y con esto ya puedes darle a Docker, al menos a nivel básico. Yo me he comprado un NAS baratito que admite usar Docker, pudiendo desplegar containers y liberar de recursos al ordenador con el que trabajas:

Otro día hablaremos de las desventajas de Docker, de la existencia de Kubernetes… pero creo que por hoy tenemos suficiente ya.

¡Hasta la semana que viene!

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.