FROM golang:1.26.5-alpine AS builder WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY cmd ./cmd COPY internal ./internal ARG VERSION=dev RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X main.version=${VERSION}" -o /out/gateway-api ./cmd/gateway-api RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-migrator ./cmd/gateway-migrator RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-bootstrap ./cmd/gateway-bootstrap RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-outbox-worker ./cmd/gateway-outbox-worker RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-maintenance ./cmd/gateway-maintenance RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-notification-worker ./cmd/gateway-notification-worker RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-scheduler ./cmd/gateway-scheduler RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-loadtest ./cmd/gateway-loadtest RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway-legacy-import ./cmd/gateway-legacy-import FROM alpine:3.22 RUN apk add --no-cache ca-certificates tzdata \ && addgroup -S gateway \ && adduser -S -G gateway gateway WORKDIR /app COPY --from=builder /out/gateway-api /usr/local/bin/gateway-api COPY --from=builder /out/gateway-migrator /usr/local/bin/gateway-migrator COPY --from=builder /out/gateway-bootstrap /usr/local/bin/gateway-bootstrap COPY --from=builder /out/gateway-outbox-worker /usr/local/bin/gateway-outbox-worker COPY --from=builder /out/gateway-maintenance /usr/local/bin/gateway-maintenance COPY --from=builder /out/gateway-notification-worker /usr/local/bin/gateway-notification-worker COPY --from=builder /out/gateway-scheduler /usr/local/bin/gateway-scheduler COPY --from=builder /out/gateway-loadtest /usr/local/bin/gateway-loadtest COPY --from=builder /out/gateway-legacy-import /usr/local/bin/gateway-legacy-import COPY migrations ./migrations USER gateway EXPOSE 8080 ENTRYPOINT ["gateway-api"]