# =========== 1) Build stage ===========
FROM golang:1.23-alpine AS builder

# Create and set working directory
WORKDIR /app

# Copy go.mod and go.sum first, then download dependencies
COPY go.mod go.sum ./
RUN go mod download

# Copy the rest of the backend code
COPY . .

# Build the Go binary
RUN go build -o server main.go

# =========== 2) Runtime stage ===========
FROM alpine:3.18

WORKDIR /app

# Copy the compiled binary from builder stage
COPY --from=builder /app/server /app

# Expose port 8180 (backend port)
EXPOSE 8180

# Run the Go server
CMD ["./server"]
