Multiple Stage Build

In this lesson, we will learn how to build smaller images using multi-stage builds.

By default, the stages are not named Stages are numbered with integers Starting with 0 for the first FROM instruction Name the stage by adding as to the FROM instruction Reference the stage name in the COPY instruction

Step 1: Set up your environment:

cd docker_images
mkdir multi-stage-builds
cd multi-stage-builds
git clone https://github.com/nishanthkumarpathi/content-weather-app.git src

Step 2: Create the Dockerfile:

vi Dockerfile

Step 3: Create an image for the weather-app using multi-stage build

Dockerfile contents:

FROM node AS build
RUN mkdir -p /var/node/
ADD src/ /var/node/
WORKDIR /var/node
RUN npm install

FROM node:alpine
ARG VERSION=V1.1
LABEL org.label-schema.version=$VERSION
ENV NODE_ENV="production"
COPY --from=build /var/node /var/node
WORKDIR /var/node
EXPOSE 3000
ENTRYPOINT ["./bin/www"]

Step 4: Create an image for the weather-app using multi-stage build

docker image build -t nishanthkp/weather-app:multi-stage-build --rm --build-arg VERSION=1.5 .

Step 5: List images to see the size difference:

docker image ls

Step 6: Create the weather-app container:

docker container run -d --name multi-stage-build -p 8087:3000 nishanthkp/weather-app:multi-stage-build

Last updated