In the previous sections, we built an image using the commit command of Docker. Although it works, I can see a big problem with it: it is not repeatable. There is no easy way of rebuilding the image once and over again when the software installed in the image is patched due to new vulnerabilities or versions.
In order to solve this problem, Docker provides a better way of building images: Dockerfiles.
A Dockerfile is a file that contains a set of ordered commands required to leave the image, ready to be used. Things such as installing software or upgrading the version of the kernel as well as adding users are common activities that can be carried in a Dockerfile. Let's look at an example:
FROM node:latest
RUN mkdir -p /app/
WORKDIR /app/
COPY package.json /app/
RUN npm install
COPY . /app
EXPOSE 8080
CMD [ "npm", "start" ]
If you have been...