Next milestone: production memory under 5 GiB, ready for upaas #6
+27
-2
@@ -1,5 +1,22 @@
|
|||||||
|
# Lint stage — fast feedback on formatting and lint issues.
|
||||||
|
# The golangci-lint image bundles Go, gcc and make, so it can run go vet on
|
||||||
|
# the CGO sqlite package and golangci-lint without extra installs.
|
||||||
|
# golangci/golangci-lint:v2.7.2 (Go 1.25.5), 2026-09-21
|
||||||
|
FROM golangci/golangci-lint@sha256:5d6d5c70a61f1356adfd9dd6316ce286799fefc9d743421356ff1b00842368ba AS lint
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN make fmt-check
|
||||||
|
RUN make lint
|
||||||
|
|
||||||
# Build stage
|
# Build stage
|
||||||
FROM golang:1.24-bookworm AS builder
|
# golang:1.24-bookworm, 2026-09-21
|
||||||
|
FROM golang@sha256:1a6d4452c65dea36aac2e2d606b01b4a029ec90cc1ae53890540ce6173ea77ac AS builder
|
||||||
|
|
||||||
# Install build dependencies (zstd for archive, gcc for CGO/sqlite3)
|
# Install build dependencies (zstd for archive, gcc for CGO/sqlite3)
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
@@ -10,12 +27,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|
||||||
|
# Force BuildKit to run the lint stage before compiling or testing.
|
||||||
|
COPY --from=lint /src/go.sum /dev/null
|
||||||
|
|
||||||
# Copy everything
|
# Copy everything
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Vendor dependencies (must be after copying source)
|
# Vendor dependencies (must be after copying source)
|
||||||
RUN go mod download && go mod vendor
|
RUN go mod download && go mod vendor
|
||||||
|
|
||||||
|
# Run the test suite in the build stage: -race needs cgo and the C compiler
|
||||||
|
# installed above. The suite is offline (the live-feed test is opt-in).
|
||||||
|
RUN make test
|
||||||
|
|
||||||
# Build the binary with CGO enabled (required for sqlite3)
|
# Build the binary with CGO enabled (required for sqlite3)
|
||||||
RUN CGO_ENABLED=1 GOOS=linux go build -o /routewatch ./cmd/routewatch
|
RUN CGO_ENABLED=1 GOOS=linux go build -o /routewatch ./cmd/routewatch
|
||||||
|
|
||||||
@@ -26,7 +50,8 @@ RUN tar --zstd -cf /routewatch-source.tar.zst \
|
|||||||
.
|
.
|
||||||
|
|
||||||
# Runtime stage
|
# Runtime stage
|
||||||
FROM debian:bookworm-slim
|
# debian:bookworm-slim, 2026-09-21
|
||||||
|
FROM debian@sha256:3783cc01769c7b2b1b83a5c5ad96c815348e28ed7da68e2e3687004faa906251
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
# - ca-certificates: for HTTPS connections
|
# - ca-certificates: for HTTPS connections
|
||||||
|
|||||||
Reference in New Issue
Block a user