summaryrefslogtreecommitdiff
path: root/src/frontend/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/Dockerfile')
-rw-r--r--src/frontend/Dockerfile60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile
new file mode 100644
index 0000000..1dbbbc7
--- /dev/null
+++ b/src/frontend/Dockerfile
@@ -0,0 +1,60 @@
+# Copyright The OpenTelemetry Authors
+# SPDX-License-Identifier: Apache-2.0
+
+FROM docker.io/library/node:22-slim AS builder
+
+WORKDIR /app
+
+COPY ./src/frontend/package.json package.json
+COPY ./src/frontend/package-lock.json package-lock.json
+
+RUN npm ci
+
+COPY ./src/frontend/components/ components/
+COPY ./src/frontend/gateways/ gateways/
+COPY ./src/frontend/pages/ pages/
+COPY ./src/frontend/protos/ protos/
+COPY ./src/frontend/providers/ providers/
+COPY ./src/frontend/services/ services/
+COPY ./src/frontend/styles/ styles/
+COPY ./src/frontend/types/ types/
+
+COPY ./src/frontend/utils/enums/ utils/enums/
+COPY ./src/frontend/utils/telemetry/ utils/telemetry/
+COPY ./src/frontend/utils/imageLoader.js utils/imageLoader.js
+COPY ./src/frontend/utils/Request.ts utils/Request.ts
+
+COPY ./src/frontend/next.config.js next.config.js
+COPY ./src/frontend/tsconfig.json tsconfig.json
+
+RUN npm run build
+
+# -----------------------------------------------------------------------------
+
+FROM docker.io/library/node:22-slim AS deps
+
+WORKDIR /app
+
+COPY ./src/frontend/package.json package.json
+COPY ./src/frontend/package-lock.json package-lock.json
+
+RUN npm ci --omit=dev
+
+# -----------------------------------------------------------------------------
+
+FROM gcr.io/distroless/nodejs22-debian12:nonroot
+
+WORKDIR /app
+
+COPY --from=builder /app/.next/standalone/ ./
+COPY --from=builder /app/.next/static/ .next/static/
+
+COPY --from=deps /app/node_modules/ node_modules/
+
+COPY ./src/frontend/public/ public/
+
+COPY ./src/frontend/utils/telemetry/Instrumentation.js Instrumentation.js
+
+EXPOSE ${FRONTEND_PORT}
+
+CMD ["--require=./Instrumentation.js", "server.js"]