# Stage 1: Build Go binary FROM golang:1.26-alpine AS builder RUN apk add --no-cache gcc musl-dev WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=$(git describe --tags --always 2>/dev/null || echo dev)" \ -o /app/boosapi ./cmd/boosapi/ # Stage 2: Minimal runtime image FROM alpine:3.21 RUN apk add --no-cache ca-certificates tzdata WORKDIR /app # Copy binary + migrations COPY --from=builder /app/boosapi . COPY --from=builder /src/internal/db/migrate ./internal/db/migrate # Create data directory RUN mkdir -p /app/data EXPOSE 4000 HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:4000/healthz || exit 1 CMD ["/app/boosapi"]