Multi-stage builds with Docker

Adithya
2 min readApr 27, 2019

--

Multi-stage Docker builds helps reduce the size of Docker images. It is supported in Docker versions 17+.

Using multi-stage builds, we can ensure that only the application and its necessary components are shipped. Previously a lot of complicated manipulation with shell scripts was required to clean up the shippable image.

Below is an example with a ASP.NET.

The sample ASP.NET code. It can be found at https://github.com/dotnet/dotnet-docker/tree/master/samples

1 — Use aspnetcore-build as base image for the first stage. This stage is named as build-env

2 — Set working directory for all further instructions

3 and 4 — Copy all csproj files and restore all project dependencies

5 — Copy all the other files

6 — Start build and output it to out directory

7 — Use aspnetcore as base imagefor the second and final stage

8 — Set working directory for all further instructions

9 — Using the name of the first stage ( build-env) to reference it in this stage
and copy the build artifacts

10 — Run the application using the artifact

Build the image using current directory as build context

Listing images, notice the reduced image size

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Adithya
Adithya

Written by Adithya

DevOps, IoT and amateur radio

No responses yet

Write a response