Dockerizando NodeJS y MongoDB

Manuel Ortega Carcamo
devsChile
Published in
3 min readJun 18, 2018

Con Docker podemos acelerar nuestro desarrollo facilitando un entorno donde probar nuestro código, mediante contenedores ligeros y portables donde en su interior se encontrará todo lo necesario para que la aplicación se ejecute correctamente (Librerías, dependencias, versiones de Kernel del sistema operativo, Motores de bases de datos, etc.)..

Los contenedores son infinitamente más livianos que las máquinas virtuales y nos permite recrear un entorno productivo en uno portátil. La construcción de imágenes se puede definir en ficheros de configuración en texto plano (Dockerfile) y contamos con herramientas como Docker Compose que nos permiten ejecutar y construir entornos multi-contenedor de forma muy sencilla. Estás características nos permite el uso de control de versiones como Git, e integrarse de manera muy sencilla en flujos de integración continua.

El presente post entrega una base para comenzar utilizando docker en el desarrollo de una aplicación usando NodeJS y MongoDB.

Instalación de Docker

Puede seguir estas guías según el sistema operativo que utilice:
.- Ubuntu
.- OSX

¿Qué es el Archivo Dockerfile?

Este archivo de configuración que permite personalizar la instalación de paquetes de software adicionales que necesita su aplicación.
Para obtener más información consulte el sitio web de Docker.

Para este ejemplo se usará el siguiente archivo:

Que hace este archivo:
1).- Creará el contenedor NodeJS donde se ejecutará la aplicación.

2).-Se copiará todo el directorio de la aplicación desde tu máquina local hacia en el contenedor Docker creado (copiará todos los archivos existentes en el directorio donde está Dockerfile).

3).- Instalará las dependencias del proyecto usandonpm install

4).- Instalará nodemon globalmente en el contenedor.

5).- La aplicación se iniciará con el archivo app.js que se encuentra en el mismo directorio del proyecto.

6).- La aplicación se iniciará en el puerto 8000, para visitarla debe acceder a http://localhost:8000/

docker-compose.yml

Este archivo permite iniciar las imágenes de Node.js y mongoDB y vincularlas. El contenedor de nodejs se creará a partir del archivo Dockerfile y mongoDB se descargará del Docker Hub.

Este archivo creará estos dos contenedores como servicios. El primero llamado web y el segundo llamado db.

Ejecutando la aplicación

a).- Se debe construir la imagen usando el comando:

b).- Luego levantar los contenedores

Código

Puedes descargar el código en mi github: https://github.com/mortegac/DockerizandoNodeMongodb

Conclusión

Tal como lo menciona la filosofía de Docker “Build, Ship, and Run Any App, Anywhere”, puedes usarlo desde el desarrollo hasta la operación usando su completo ecosistema de herramientas que facilitan la gestión del ciclo de vida de tu aplicación (despliegue de nodos (machine), orquestación y cluster (swarm), definición de servicios multicontenedor (compose), repositorio de imágenes (registry), herramientas corporativas (datacenter), auditorías de seguridad (dockerbench), firmado de imágenes (notary), etc. .

Personalmente Docker me ha ayudado a tener el entorno de desarrollo de mis proyectos encapsulados para tenerlos ordenados y versionados. Con esto ahorrar tiempo al no tener que instalar diferentes softwares para poder ejecutar la aplicación.

--

--

Manuel Ortega Carcamo
devsChile

Software Engineer, Full Stack developer, passionate about code, Surfing, Snowboard. Mostly working with Javascript and Nodejs