Hoy vamos a ver de una forma rapida y sencilla como podemos dockerizar Express, nuestra aplicacion que creamos en el post anterior

A estas alturas habra pocos que no sepan que es Docker pero si aun sigues sin saberlo te recomiendo que leas alguno de estos articulos:

Una vez que tenemos todos claro lo que es Docker empecemos

Dockerizar Express

Lo primero es crear el fichero Dockerfile

#imagen desde la cual crearemos la nuestra
FROM node:4.2.3

#copiamos los archivos a nuestro directorio /src
COPY index.js /src/index.js
COPY package.json /src/package.json

#instalamos los modulos
RUN cd /src; npm install

#puerto que va a exponer nuestra imagen Docker
EXPOSE 3000

#ejecutamos nuestro servidor
CMD ["node", "/src/index.js"]

Si usas un Mac o Windows tendras que instalar Boot2Docker para poder ejecutar imagenes Docker en tu equipo. Una vez instalado y arrancado ya podemos continuar

Lo primero construir la imagen

docker build -t rubenjgarcia/express-hello-world .

Puedes poner cualquier nombre a tu imagen pero pon uno que luego sea facil de recordar por si tienes que reutilizarla

Si ejecutas el comando docker images veras algo asi

REPOSITORY                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rubenjgarcia/express-hello-world   latest              a406fd4d682a        16 seconds ago      644.9 MB
node                               4.2.3               14aadd36ad0c        3 days ago          641.8 MB

Ya podemos arrancar nuestro contenedor

docker run -p 3001:3000 -d rubenjgarcia/express-hello-world

El parametro -p indica que puerto de nuestra maquina local (3001) se va a mapear a que puerto de nuestro docker (3000). De esta manera si accedemos a http://localhost:3001 podremos ver nuestra aplicacion ejecutandose

OJO!! Si usas Boot2Docker no podras acceder mediante esa url, tendras que usar la IP de la maquina virtual que se instala para poder usar Docker. Usa el comando boot2docker ip para obtenerla