|
@@ -0,0 +1,34 @@
|
|
|
|
|
+# syntax=docker/dockerfile:1.7
|
|
|
|
|
+
|
|
|
|
|
+FROM node:22-bookworm-slim AS frontend-build
|
|
|
|
|
+WORKDIR /src
|
|
|
|
|
+
|
|
|
|
|
+COPY frontend/package.json frontend/package-lock.json ./frontend/
|
|
|
|
|
+RUN npm --prefix frontend ci
|
|
|
|
|
+
|
|
|
|
|
+COPY frontend ./frontend
|
|
|
|
|
+RUN mkdir -p /src/internal/web && npm --prefix frontend run build
|
|
|
|
|
+
|
|
|
|
|
+FROM golang:1.25-bookworm AS backend-build
|
|
|
|
|
+WORKDIR /src
|
|
|
|
|
+
|
|
|
|
|
+COPY go.mod go.sum ./
|
|
|
|
|
+RUN go mod download
|
|
|
|
|
+
|
|
|
|
|
+COPY cmd ./cmd
|
|
|
|
|
+COPY internal ./internal
|
|
|
|
|
+COPY --from=frontend-build /src/internal/web/static ./internal/web/static
|
|
|
|
|
+
|
|
|
|
|
+RUN CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o /out/viewer ./cmd/viewer
|
|
|
|
|
+
|
|
|
|
|
+FROM gcr.io/distroless/static-debian12:nonroot
|
|
|
|
|
+WORKDIR /app
|
|
|
|
|
+
|
|
|
|
|
+COPY --from=backend-build /out/viewer /app/viewer
|
|
|
|
|
+
|
|
|
|
|
+ENV PORT=8080 \
|
|
|
|
|
+ CACHE_DIR=/tmp/viewer-cache/images \
|
|
|
|
|
+ ZIP_CACHE_DIR=/tmp/viewer-cache/zips
|
|
|
|
|
+
|
|
|
|
|
+EXPOSE 8080
|
|
|
|
|
+ENTRYPOINT ["/app/viewer"]
|