Siguiendo con nuestras entregas en este Blog acerca de contenedores paso a paso, hoy vamos a ver cómo crear imágenes usando un archivo de configuración denominado Dockerfile.
El resultado final es esencialmente el mismo que con una imagen binaria estática, pero con un archivo Docker estamos suministrando las instrucciones para construir la imagen, en lugar de simplemente los archivos binarios en bruto. Esto es útil porque así es mucho más fácil administrar los cambios, especialmente a medida que las imágenes se hacen más grandes y más complejas.
Por ejemplo, si se lanza una nueva versión de figlet (https://ubunlog.com/figlet-banners-ascii-terminal/ ), tendríamos que volver a crear nuestra imagen desde cero o ejecutar nuestra imagen y actualizar la versión instalada de figlet. En cambio, si usamos un Dockerfile dicho archivo incluiría los comandos apt-get que usamos para instalar figlet, de modo que cualquier persona que use nuestro archivo Dockerfile, simplemente recomponga la imagen usando las instrucciones que contiene ese archivo.
Los archivos del tipo Dockerfile son muy poderosos porque nos permiten administrar cómo se construye una imagen, en lugar de sólo administrar archivos binarios. En la práctica, un Dockerfile se puede comportar de la misma manera que se podría comportar el código fuente: es un archivo de texto, por lo que casi cualquier sistema de control de versiones se puede usar para administrar un conjunto de archivos Docker a lo largo del tiempo.
Ahora voy a usar un ejemplo de una aplicación “Hola Mundo” basada en Node.js
Aclaro que no soy programador de Node.js, pero para efectos de nuestro ejercicio no es necesario saber de programación en Node.js.
El siguiente es el contenido de un archivo denominado index.js que se debe crear con cualquier editor de texto de su preferencia, lo puede crear en cualquier ruta de disco de su máquina, recuerde que debe tener extensión .js
var os = require(«os»);
var hostname = os.hostname();
console.log(«Hola mundo desde » + hostname);
Este archivo genera el famoso “Hola mundo” y se le agrega el hostname, es decir desde donde se generó el mensaje.
Vamos a ejecutar esta aplicación usando Docker y para ello creamos un Dockerfile. Usaremos alpine Linux como la imagen del sistema operativo base, y agregaremos un runtime de Node.js y luego copiaremos nuestro código fuente en el contenedor. También especificaremos el comando predeterminado que se ejecutará al crear el contenedor.
Ahora es necesario crear un archivo que se denomine Dockerfile en la misma ruta en donde creamos nuestro anterior archivo index.js, para efectos prácticos haré mi ejercicio en la ruta C:\tmp\Docker de mi máquina Windows
Contenido del archivo Dockerfile:
FROM alpine
RUN apk update && apk add nodejs
COPY . /app
WORKDIR /app
CMD [«node»,»index.js»]
Así quedaron mis archivos dentro de mi carpeta C:\tmp\Docker