From 75d1905998488a30c39787cf24bcbd969feee41e Mon Sep 17 00:00:00 2001 From: adam jones Date: Thu, 21 Aug 2025 22:20:13 +0100 Subject: [PATCH] build: Optimize Dockerfile by splitting out dependency installation and go build (#286) Create a separate step in the Docker image to install the dependencies. This makes local dev a bunch faster, because Docker doesn't redownload all the dependencies each time you make a small file changes. --- Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5a30017..36d2905 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,14 @@ FROM golang:1.24-alpine AS builder WORKDIR /app + +# Copy go mod files first and download dependencies +# This creates a separate layer that only invalidates when dependencies change +COPY go.mod go.sum ./ +RUN go mod download + +# Copy the rest of the source code COPY . . + ARG GO_BUILD_TAGS RUN go build ${GO_BUILD_TAGS:+-tags="$GO_BUILD_TAGS"} -o /build/registry ./cmd/registry