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"]