Hola de nuevo, es muy grato para mí volver a escribir para platicarte un poco de Docker y las ventajas que nos aporta usar esta herramienta.
Si no conoces las bases para utilizar Docker, te recomiendo que primero leas mi post anterior: Primeros pasos que debes seguir para sacar provecho a Docker. De esta manera, conocerás de forma general qué son los contenedores, cuál es su historia, algunas de sus ventajas y la manera de instalar el motor de Docker en Windows.
En esta segunda entrega pondremos manos a la obra. Me acompañarás a desarrollar un caso práctico muy simple, pero que nos permitirá explorar las ventajas de Docker y su facilidad para crear “ambientes” de desarrollo donde probar alguna nueva tecnología o empaquetar una aplicación que tengamos lista para ser desplegada.
Antes de continuar quisiera hablarte de algunos conceptos y herramientas que usaremos al trabajar con Docker y que son importante que conozcas:
Ahora que ya sabemos la finalidad de Docker y algunos conceptos clave, vayamos al caso práctico:
En este caso, usaremos una aplicación React corriendo sobre un servidor Nodejs. No voy a entrar en detalles del código de la aplicación que cree para este fin, pero tú podrás encontrarlo aquí.
Como podemos observar, nuestro Dockerfile tiene las siguientes instrucciones:
FROM: Es nuestro primer paso, ahí indicamos que imagen (versión, tecnología) usaremos como base para nuestro contenedor. En este caso, estamos usando “node:latest”, que es la versión mas nueva de nodo.
WORKDIR: En este paso indicamos a nuestro contenedor cuál es el directorio de trabajo en que estaremos.
COPY: Realiza la copia de archivos o carpetas dentro de nuestro contenedor, en este caso estamos copiando el archivo "package.json" que contiene la lista de dependencias a instalar para ejecutar nuestra app. También en la línea 9 copia todo el contenido de nuestra app.
RUN: Esta instrucción le dice a Docker que va ejecutar un comando, en este caso “npm install” para instalar las dependencias necesarias en nuestra app.
CMD: Provee la manera de ejecutar nuestra app dentro del contenedor, básicamente, en nuestro ejemplo, le está diciendo a "npm" que inicie.
Nota: Estas imágenes están disponibles en Dockerhub.
Descubre más sobre las instrucciones del Dockerfile.
Abrir Windows PowerShell
Inicio -> Windows PowerShell -> abrir
< docker build -t mynodeimage:1.0 . >
Pero, ¿qué hace el comando anterior? La primera parte "docker build" le indica al motor de Docker que haremos una nueva construcción de una imagen.
"-t -t mynodeimage:1.0" Agrega el nombre de la imagen que vamos a construir, seguido de ":1.0" que es la etiqueta que hace referencia a la última versión de la imagen
"." El Punto indica el nivel actual en el directorio de archivos
Después de algún tiempo tendremos nuestra imagen lista. Eso dependerá de la velocidad de red con la que se cuente.
Podremos listar las imágenes que tenemos creadas
< docker images >
docker run --name mynode-image -d -p 3000:3000 mynodeimage:1.0
"docker run" Le indica al motor de Docker que vamos a correr una imagen.
"--name mynode-image" Nombre que le asignaremos a nuestra imagen para poder identificarla.
"-d" Le indica al motor de Docker que la imagen debe de correr en segundo plano.
"-p 3000:3000" Indica el puerto local de nuestra máquina que va a escuchar al puerto interno del contenedor.
"mynodeimage:1.0" El nombre de la imagen que creamos anteriormente con su respectiva etiqueta.
Como puedes ver, aunque es una aplicación sencilla, te será útil para entender cómo funciona Docker y qué es lo que puedes hacer con esta herramienta.
Cualquier duda, puedes escribirme a amiranda@palo-it.com y encantado de conversar.
También te invito a ponerte en contacto con nosotros, nos encantaría explorar cómo podemos trabajar juntos: