Docker. Уменьшаем размер образа

Сегодня  на YouTube наткнулся на интересное видео от Google «Building Small Containers (Kubernetes Best Practices)». В частности это касается только приложений написанных на компилируемых языках программирования. У меня есть не большой «pet project» написанный на Golang, в результате применения данной методики мой образ сократился с 800 Mb до 12 Mb, Dockerfile, было:

FROM golang
 
RUN mkdir -p /opt/gocode/translator
ENV GOPATH=/opt/gocode/translator
 
COPY main.go /opt/gocode/translator
 
WORKDIR /opt/gocode/translator
RUN go build
 
EXPOSE 8080
 
CMD ["/opt/gocode/translator/translator"]

стало:

FROM golang:alpine AS build-env
 
WORKDIR /app
ADD . /app
RUN cd /app && go build -o translator
 
FROM alpine
RUN apk update && \
    apk add ca-certificates && \
    rm -rf /var/cache/apk/*
WORKDIR /app
COPY --from=build-env /app/translator /app
 
EXPOSE 8080
CMD ["/app/translator"]

Ссылка на коммит https://github.com/taleksandrv/translator-go/commit/37e57dc00fbbf0002494064a3141f8f47d3df652

Почти в 67, это ли не круто! В видео, кстати еще много полезного.

Ссылка на само видео https://youtu.be/wGz_cbtCiEA

Подробнее о pet projct напишу позже.