diff --git a/rebase.Dockerfile b/rebase.Dockerfile new file mode 100644 index 00000000..0b1cf604 --- /dev/null +++ b/rebase.Dockerfile @@ -0,0 +1,58 @@ +FROM node:18-bookworm as base +RUN apt-get update \ + && apt-get install -y \ + tini && \ + npm install pnpm --global +WORKDIR /app + +FROM base as server-dependencies +COPY server/pnpm-lock.yaml . +RUN pnpm fetch --prod +RUN pnpm install -r --offline --prod + +FROM base as client +COPY client/pnpm-lock.yaml . +RUN pnpm fetch --prod +COPY client . +RUN pnpm install -r --offline --prod +RUN DISABLE_ESLINT_PLUGIN=true pnpm run build + +FROM base AS intermediate + +WORKDIR /app + +COPY --from=server-dependencies /app/node_modules node_modules +COPY --from=server-dependencies /usr/bin/tini /usr/local/bin/tini + +COPY --from=client /app/build public +COPY --from=client /app/build/index.html views/index.ejs + +COPY docker-entrypoint.sh . +COPY server . + +RUN mv .env.sample .env + +FROM node:18-bookworm-slim AS final + +ARG USER=planka + +RUN useradd --no-create-home --shell /bin/bash $USER + +USER $USER + +WORKDIR /app + +COPY --from=server-dependencies --chown=$USER:$USER /usr/bin/tini /usr/local/bin/tini +COPY --from=intermediate --chown=$USER:$USER /app . + +VOLUME /app/public/user-avatars +VOLUME /app/public/project-background-images +VOLUME /app/private/attachments + +EXPOSE 1337/tcp + +# Use Tini to start Planka and shutdown gracefully: +# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals +ENTRYPOINT ["tini", "--"] + +CMD ["./docker-entrypoint.sh"] \ No newline at end of file