Go 專案的 Docker Build 加速:分層快取跟 ARG 位置
在 Dockerfile 裡 build golang 程式總是要花個幾分鐘,雖然不多,但是反覆的測試跟修改程式下,往往也花掉了不少時間。 目前使用的 Dockerfile 大概如下,在舊筆電 build 一次大概要 2 分鐘多 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 FROM golang:1.24-alpine AS builder ARG VERSION=v0.0.0 ARG COMMIT=unknown WORKDIR /src ADD . /src RUN CGO_ENABLED=0 go build \ -ldflags "-X github.com/nyorc/go-ver.Version=${VERSION} \ -X github.com/nyorc/go-ver.BuildTime=$(date +%Y/%m/%dT%H:%M:%S) \ -X github.com/nyorc/go-ver.Commit=${COMMIT}" \ -o app FROM alpine:latest COPY --from=builder /src/app /bin/app ENTRYPOINT [ "/bin/app" ] 筆電環境 ...