FROM golang:1.25-alpine AS builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -o server ./cmd/api/main.go FROM golang:1.25-alpine AS dev RUN go install github.com/air-verse/air@latest WORKDIR /app COPY go.mod go.sum ./ RUN go mod download EXPOSE 8080 CMD ["air", "-c", ".air.toml"] FROM alpine:latest AS production WORKDIR /app COPY --from=builder /app/server . EXPOSE 8080 CMD ["./server"]