Dockerfile 827 B

12345678910111213141516171819202122232425262728293031323334
  1. # syntax=docker/dockerfile:1.7
  2. FROM node:22-bookworm-slim AS frontend-build
  3. WORKDIR /src
  4. COPY frontend/package.json frontend/package-lock.json ./frontend/
  5. RUN npm --prefix frontend ci
  6. COPY frontend ./frontend
  7. RUN mkdir -p /src/internal/web && npm --prefix frontend run build
  8. FROM golang:1.25-bookworm AS backend-build
  9. WORKDIR /src
  10. COPY go.mod go.sum ./
  11. RUN go mod download
  12. COPY cmd ./cmd
  13. COPY internal ./internal
  14. COPY --from=frontend-build /src/internal/web/static ./internal/web/static
  15. RUN CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o /out/viewer ./cmd/viewer
  16. FROM gcr.io/distroless/static-debian12:nonroot
  17. WORKDIR /app
  18. COPY --from=backend-build /out/viewer /app/viewer
  19. ENV PORT=8080 \
  20. CACHE_DIR=/tmp/viewer-cache/images \
  21. ZIP_CACHE_DIR=/tmp/viewer-cache/zips
  22. EXPOSE 8080
  23. ENTRYPOINT ["/app/viewer"]