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.
This commit is contained in:
adam jones 2025-08-21 22:20:13 +01:00 • committed by GitHub
commit 75d1905998
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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