diff options
Diffstat (limited to 'Dockerfile')
| -rw-r--r-- | Dockerfile | 53 |
1 files changed, 39 insertions, 14 deletions
@@ -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"] |
