diff --git a/Services/.dockerignore b/Services/.dockerignore new file mode 100644 index 0000000..0f44b51 --- /dev/null +++ b/Services/.dockerignore @@ -0,0 +1,6 @@ +.DS_Store +node_modules +dist +.env +.env.* +!.env.example diff --git a/Services/Dockerfile b/Services/Dockerfile new file mode 100644 index 0000000..916da75 --- /dev/null +++ b/Services/Dockerfile @@ -0,0 +1,32 @@ +# docker build -t docker.frappet.com/edm/core . +FROM node:20-slim AS base + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +WORKDIR /app + +FROM base as server +COPY ./server . + +FROM server AS deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile + +FROM server AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +FROM base as client +COPY ./client . +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +FROM base as prod +COPY --from=deps /app/node_modules /app/node_modules +COPY --from=build /app/dist /app/dist +COPY --from=server /app/static /app/static +COPY --from=client /app/dist /app/static + +CMD ["node", "./dist/app.js"]