Dockerize a node app in 2 minutes

For the following I’m using a project of mine : Explorer. It’s a directory listing tool. To run it only needs a configuration file.

# The Dockerfile

Using node:onbuild it can’t be easier:

FROM node:onbuild
ENV EXPLORER_CONFIG="/opt/explorer"
RUN npm rebuild -q

The http server runs on 4859 and 6859 by default. I’m using an environnement variable to set the container’s configuration path.

# 1. Build the container

docker build -t explorer .

# 2. Run it

# Interactive
docker run -p 8080:4859 -it --rm -v $(pwd)/doc/examples:/opt/explorer --name explorer explorer

Here the shared configuration will be ./doc/examples/config.yml. I’m also forwarding 8080 to 4859 which is the default http port.

My node app can take it’s default configuration if none is given, so I can also start the container without volumes:

docker run -p 8080:4859 -it --rm --name explorer explorer
# Daemon
docker run -p 80:4859 -p 443:6859 --name explorer -d \
-v /home/me/.config/explorer:/opt/explorer \
-v /home/me/:/home/explorer explorer

Forwarding http and https default ports. The config is now located in ~/home/me/.config/explorer and mounting /home/me will allow me to use /home/explorer in my container.