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
MAINTAINER "Someone"
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.