Многоступенчатая сборка Docker-образов

Thank you for reading this post, don't forget to subscribe!

Нач­нем с про­стой про­грам­мы на Go:

Собе­рем ее с помо­щью обра­за golang:alpine одно­сту­пен­ча­тым спо­со­бом (single-stage build). Вот Dockerfile:

Теперь собе­рем образ и запу­стим контейнер:

Все рабо­та­ет, но давай­те посмот­рим на раз­мер с помо­щью docker images | grep treeder/hello.

258 МБ — мно­го­ва­то для кро­шеч­но­го бинар­но­го фай­ла. Теперь давай­те попро­бу­ем мно­го­сту­пен­ча­туюсбор­ку (multi-stage build) с исполь­зо­ва­ни­ем ново­го Dockerfile:

Собе­рем и запу­стим снова:

Про­ве­рим размер:

6,35 МБ — намно­го лучше.