Cache golang packages saat membuat docker image
Inilah Dockerfile
yang saya punya sekarang
FROM golang:1.16.3-alpine AS builder
WORKDIR /app
COPY . /app
RUN go mod download
RUN go build -o app
CMD ["./app"]
Saya pikir kenapa go mod download
selalu sangat lama dijalankan saat menjalankan docker build sedangkan tidak ada package yang ditambah ataupun dirubah
ternyata masalahnya ada karena saya saya meng-copy semua file yang ada di root folder
COPY . /app
Solusi
Ternyata solusinya sangatlah mudah!
go mod download
harus dijalankan jika go.sum
atau go.mod
berubah
jadi saya rubah Dockerfilenya menjadi seperti ini, dan sekarang go mod download
hanya akan dijalankan jika go.sum
atau go.mod
berubah
FROM golang:1.16.3-alpine AS builder
WORKDIR /app
COPY go.mod /app/go.mod
COPY go.sum /app/go.sum
RUN go mod download
COPY . /app
RUN go build -o app
CMD ["./app"]