# Build Stage
FROM golang:1.23.0-alpine AS builder

# Set environment variable
ENV APP_NAME niki

# Add a work directory
WORKDIR /$APP_NAME

# Copy app files
COPY . .

# Budild application
RUN CGO_ENABLED=0 go build -mod=vendor -v -o $APP_NAME .

# Run Stage
FROM alpine:3.20 AS runtime

# Copy the binary from the builder stage
COPY --from=builder /niki/niki .

# Copy migration files
COPY --from=builder /niki/repository/mysql/migration ./repository/mysql/migration

# Expose application port
EXPOSE 8313

# Start the application
CMD ["./niki", "--migrate"]