# Stage 1: Build the application FROM golang:1.25.3-alpine AS builder WORKDIR /app # Copy go.mod and go.sum first to leverage Docker's caching COPY go.mod go.sum ./ RUN go mod download # Copy the rest of the application source code COPY . . # Build the Go application # CGO_ENABLED=0 disables Cgo for a fully static binary # -a links all packages statically # -installsuffix cgo_non_shared avoids issues with shared libraries RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo_non_shared -o main . # Stage 2: Create the final lean image FROM alpine:latest WORKDIR /root/ # Copy the built binary from the builder stage COPY --from=builder /app/main . # Expose the port your Gin application listens on (e.g., 8080) EXPOSE 8080 # Command to run the application CMD ["./ordr-api"]