aboutsummaryrefslogtreecommitdiffstats
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/Dockerfile27
-rw-r--r--frontend/package.json3
-rw-r--r--frontend/shared-types.ts3
3 files changed, 32 insertions, 1 deletions
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000..2a22355
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,27 @@
+# Install dependencies only when needed
+FROM node:alpine AS deps
+# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
+RUN apk add --no-cache libc6-compat
+WORKDIR /app
+COPY package.json package-lock.json ./
+RUN npm ci --only-prod
+
+# Rebuild the source code only when needed
+FROM node:alpine AS builder
+
+ENV NODE_ENV production
+ENV NEXT_TELEMETRY_DISABLED 1
+ARG NEXT_PUBLIC_BACKEND_URL
+
+WORKDIR /app
+COPY . .
+COPY --from=deps /app/node_modules ./node_modules
+RUN printenv > .env.local
+RUN npm run build && npm run export
+
+# Production image, copy all the files and run next
+FROM sebp/lighttpd:latest AS runner
+
+WORKDIR /var/www/localhost/htdocs
+
+COPY --from=builder /app/out ./
diff --git a/frontend/package.json b/frontend/package.json
index bb2e5b5..48fa29f 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -6,7 +6,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
- "lint": "next lint"
+ "lint": "next lint",
+ "export": "next export"
},
"dependencies": {
"next": "11.0.1",
diff --git a/frontend/shared-types.ts b/frontend/shared-types.ts
new file mode 100644
index 0000000..51f3281
--- /dev/null
+++ b/frontend/shared-types.ts
@@ -0,0 +1,3 @@
+export interface ValueRecord {
+ value: number;
+}