Speed Up Docker Build With Go Module

Posted by Joe's Notes on Sunday, October 13, 2019

TOC

上一篇 說明了如何降低Docker 編譯Go程式產生的image大小,但同時也提到了因為Go 每次都會去抓相依的module導致編譯速度就是慢! go mod download 有什麼方法可以加速呢?來看看看優化版本

optimized.Dockerfile

#first stage - builder
FROM golang:1.13.1-stretch as builder

WORKDIR /api

#Step 1. 複製go.mod及go.sum
COPY go.mod go.sum ./

#Step 2. 下載所有的dependencies, 只要go.mod和go.sum不變就不需要重新下載相依
RUN go mod download

# Step 3. 複製source code並編譯
COPY . .

ENV GO111MODULE=on
RUN CGO_ENABLED=0 GOOS=linux go build -o api main.go

#second stage
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /api .
CMD ["./api"]

透過Step 1,2 來節省下載相依的時間,試試看吧~

如同前一篇提及,alpine是精簡的fs, 缺少許多程式需要的library例如tzdata等等,如何寫出完整的Dockerfile呢?請看此

「您的支持是創作的原動力」

Joe's Notes

您的支持是創作的原動力

使用Wechat(微信))掃描QR Code贊助我吧!


comments powered by Disqus