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"]