aboutsummaryrefslogtreecommitdiffstats
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile53
1 files changed, 39 insertions, 14 deletions
diff --git a/Dockerfile b/Dockerfile
index d31173b..3fefd3c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,22 +1,47 @@
-FROM node:21-slim as base
+FROM node:21-alpine as base
-EXPOSE 3000/tcp
WORKDIR /usr/app
-COPY ./ ./
+COPY ./package.json \
+ ./package-lock.json \
+ ./next.config.js \
+ ./tsconfig.json \
+ ./reset.d.ts \
+ ./tailwind.config.js \
+ ./postcss.config.js ./
+COPY ./scripts ./scripts
+COPY ./prisma ./prisma
+COPY ./src ./src
-RUN apt update && \
- apt install openssl -y && \
- apt clean && \
- apt autoclean && \
- apt autoremove && \
+RUN apk add --no-cache openssl && \
npm ci --ignore-scripts && \
- npm install -g prisma && \
- prisma generate
+ npx prisma generate
-# env vars needed for build not to fail
-ARG POSTGRES_PRISMA_URL
-ARG POSTGRES_URL_NON_POOLING
+ENV NEXT_TELEMETRY_DISABLED=1
+COPY scripts/build.env .env
RUN npm run build
-ENTRYPOINT ["/usr/app/scripts/container-entrypoint.sh"]
+RUN rm -r .next/cache
+
+FROM node:21-alpine as runtime-deps
+
+WORKDIR /usr/app
+COPY --from=base /usr/app/package.json /usr/app/package-lock.json ./
+COPY --from=base /usr/app/prisma ./prisma
+
+RUN npm ci --omit=dev --omit=optional --ignore-scripts && \
+ npx prisma generate
+
+FROM node:21-alpine as runner
+
+EXPOSE 3000/tcp
+WORKDIR /usr/app
+
+COPY --from=base /usr/app/package.json /usr/app/package-lock.json ./
+COPY --from=runtime-deps /usr/app/node_modules ./node_modules
+COPY ./public ./public
+COPY ./scripts ./scripts
+COPY --from=base /usr/app/prisma ./prisma
+COPY --from=base /usr/app/.next ./.next
+
+ENTRYPOINT ["/bin/sh", "/usr/app/scripts/container-entrypoint.sh"]