Dockerize your Koop app for deployment

Docker is a widely adopted technique for application containerization and deployment to cloud services. In this tutorial, we are going to talk about how to dockerize a Koop application. It is based on the great article Dockerizing a Node.js web app and tailored for a Koop app generated by Koop CLI (like this).

We assume the reader has some knowledge of Docker.

First of all, you need to create a Dockerfile in the project root directory. It is as simple as

# Based on the latest Node.js LTS version
FROM node:12

# Create app directory in docker
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install

# If you are building your code for production, run this instead of install
# RUN npm ci --only=production

# Copy app source code
COPY . .

# Expose the server port. This must be the same as the one in the config (config/default.json)
EXPOSE 9000

# Start the Koop app
CMD [ "node", "src/index.js" ]

To avoid copying the heavy node_modules directory in the docker image, you can add a .dockerignore file in the project root directory, with the following content:

node_modules

Now the Koop app is ready to use with Docker.

You can build the docker image with the following command

docker build -t docker-koop .

and run it with

docker run -p 9000:9000 docker-koop

You should now have a Koop server running at

http://localhost:9000

If you are interested in running Koop with Docker, you can take a look at our Koop Docker Example and use it as a template for your next app!


Improve this page