28.09.2021 в 23:08
LegGnom
Уменьшить размер образа докера для приложения golang
Вы когда-нибудь долго ждали, чтобы отправить образ докера приложения golang в docker hub или другой реестр контейнеров? Если да, то эта статья может быть вам полезна.
Идея в том, чтобы уменьшить размер образа. Мы можем сделать это с помощью многоэтапной сборки. Сначала нам понадобится образ golang для построения кода, а результат будет двоичным файлом. А затем для следующего этапа нам понадобится рабочий образ и скопируйте двоичный файл из первой сборки.
Это пример кода приложения golang.
package main
import "fmt"
func main() {
fmt.Println("testing 123")
}
И это dockerfile без многоступенчатой сборки.
FROM golang:1.16
WORKDIR /app
COPY . .
RUN go build -o app
CMD ["./app"]
Размер этого изображения 921 МБ.
А это новый dockerfile с многоэтапной сборкой.
FROM golang:1.16 as gobuild
WORKDIR /app
COPY . .
RUN go build -o app
FROM scratch
WORKDIR /app
COPY --from=gobuild /app/app .
CMD ["./app"]
Размер этого изображения составляет 1,94 МБ.