From e53ef3d9fca15497b44401cedf8d79fdde10fd41 Mon Sep 17 00:00:00 2001 From: pantonshire Date: Thu, 15 Jun 2023 19:47:13 +0100 Subject: [PATCH] containerisation --- Dockerfile | 41 +++++++++++++++++++++++++++++++++++++++++ docker/next.config.js | 6 ++++++ 2 files changed, 47 insertions(+) create mode 100644 Dockerfile create mode 100644 docker/next.config.js diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..86ceb37 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM docker.io/library/rust:1.70-alpine AS wasm_builder +WORKDIR /app/ +COPY utfdump/Cargo.toml utfdump/Cargo.lock ./ +COPY utfdump/lib/ ./lib/ +COPY utfdump/wasm/ ./wasm/ +COPY utfdump/bin/ ./bin/ +RUN apk update && apk add --no-cache musl-dev wasm-pack +WORKDIR /app/wasm/ +RUN wasm-pack build --release --target web + +FROM docker.io/library/node:20-alpine AS node + +FROM node AS node_deps +WORKDIR /app/ +COPY package.json package-lock.json ./ +RUN npm ci +ENTRYPOINT /bin/sh + +FROM node AS next_builder +WORKDIR /app/ +COPY --from=wasm_builder /app/wasm/pkg/ ./wasm/utfdump/ +COPY --from=node_deps /app/node_modules/ ./node_modules/ +COPY package.json package-lock.json docker/next.config.js next-env.d.ts tsconfig.json ./ +COPY src/ ./src/ +COPY public/ ./public/ +ENV NEXT_TELEMETRY_DISABLED 1 +RUN npm run build + +FROM node AS runner +WORKDIR /app +ENV NODE_ENV production +ENV NEXT_TELEMETRY_DISABLED 1 +RUN addgroup -g 998 -S next && adduser -G next -u 998 -S next +COPY --from=next_builder /app/public/ ./public/ +COPY --from=next_builder --chown=next:next /app/.next/standalone/ ./ +COPY --from=next_builder --chown=next:next /app/.next/static/ ./.next/static/ +USER next +EXPOSE 3000 +ENV PORT 3000 +CMD ["node", "server.js"] + diff --git a/docker/next.config.js b/docker/next.config.js new file mode 100644 index 0000000..b408897 --- /dev/null +++ b/docker/next.config.js @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'standalone', +}; + +module.exports = nextConfig;