# 1) Build stage FROM golang:1.21-alpine AS build RUN apk --no-cache add ca-certificates tzdata git curl WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o /out/app ./cmd/server # 2) Production stage FROM debian:bullseye-slim AS production RUN apt-get update && apt-get install -y ca-certificates tzdata curl && rm -rf /var/lib/apt/lists/* RUN groupadd -r appuser && useradd -r -g appuser appuser COPY --from=build /out/app /app ENV TZ=Asia/Jakarta EXPOSE 3300 HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD curl -fsS http://localhost:3300/health || exit 1 USER appuser ENTRYPOINT ["/app"]