Prechádzať zdrojové kódy

chore: add multi-stage Dockerfile

iwanhae 3 dní pred
rodič
commit
54772bc001
1 zmenil súbory, kde vykonal 34 pridanie a 0 odobranie
  1. 34 0
      Dockerfile

+ 34 - 0
Dockerfile

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