FROM golang:1.26-bookworm AS base

# Move to working directory /app
WORKDIR /app

# Copy the go.mod and go.sum files to the /app directory
COPY go.mod go.sum ./

# Install dependencies
RUN go mod download

# Copy the entire source code into the container
COPY . .

# Build the application
RUN go build -o shortener

# Install goose migration tool
RUN GOBIN=/app go install github.com/pressly/goose/v3/cmd/goose@latest

FROM golang:1.26-bookworm AS runner

WORKDIR /app
COPY --from=base /app/shortener /app/shortener
COPY --from=base /app/goose /app/goose
COPY --from=base /app/sql/schema /app/sql/schema

# Document the port that may need to be published
EXPOSE 8080

# Start the application
CMD ["/app/shortener"]
