FROM node:24-bookworm-slim AS frontend WORKDIR /src/web COPY web/package*.json ./ RUN npm ci COPY web/ ./ RUN npm run build FROM golang:1.26-bookworm AS backend WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . COPY --from=frontend /src/web/dist ./web/dist RUN CGO_ENABLED=1 go build -trimpath -o /finance-duck ./cmd/finance-duck FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libstdc++6 && rm -rf /var/lib/apt/lists/* && useradd --uid 10001 --create-home finance && mkdir /data && chown finance:finance /data COPY --from=backend /finance-duck /usr/local/bin/finance-duck USER 10001:10001 VOLUME /data EXPOSE 8080 ENTRYPOINT ["finance-duck"] CMD ["-data", "/data", "-listen", "0.0.0.0:8080", "-public-url", "http://localhost:8080"]