# ---- Builder Stage ---- FROM golang:1.25.1-bookworm AS builder # Build Args ARG BUILD_COMMAND="go build -o app ." ARG BINARY_NAME="app" ARG CGO_ENABLED="0" # Env setup ENV CGO_ENABLED=${CGO_ENABLED} # Setup workdir WORKDIR /build # Copy go.mod and go.sum first to leverage caching COPY go.mod go.sum ./ RUN go mod download # Copy the rest of the source COPY . . # Build with Go build cache (requires BuildKit) RUN ${BUILD_COMMAND} # ---- Runner Stage ---- FROM debian:bookworm-slim AS runner # Install minimal runtime dependencies (e.g. for TLS, CA certs) RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ && rm -rf /var/lib/apt/lists/* # Build Args ARG BINARY_NAME="app" # Setup workdir WORKDIR /user # Copy binary and config files COPY --from=builder /build/${BINARY_NAME} ./app # Copy migrations directory COPY --from=builder /build/migrations ./migrations COPY config.yaml . COPY db.yaml . COPY ui.html . COPY ui_dbedit.html . COPY ui_admin_chats.html . EXPOSE 8080 # Run binary directly ENTRYPOINT ["./app"]