Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,82 @@
|
||||
# Hocuspocus realtime-collaboration server image.
|
||||
#
|
||||
# Built from the monorepo root (build context = repository root) so the
|
||||
# Docker layer cache can reuse pnpm install layers shared with the api /
|
||||
# worker / web images. Final image is `node:20-bookworm-slim` running
|
||||
# `apps/hocuspocus/dist/index.js` on port 1234.
|
||||
FROM --platform=linux/amd64 node:20-bookworm-slim AS base
|
||||
|
||||
ENV NODE_ENV="production"
|
||||
ENV CI="true"
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends openssl curl \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& corepack enable \
|
||||
&& corepack prepare pnpm@10.33.0 --activate
|
||||
|
||||
FROM base AS deps
|
||||
WORKDIR /myapp
|
||||
ADD package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
ADD prisma prisma
|
||||
ADD apps apps
|
||||
ADD packages packages
|
||||
RUN pnpm install --frozen-lockfile --prod=false
|
||||
|
||||
FROM base AS production-deps
|
||||
WORKDIR /myapp
|
||||
COPY --from=deps /myapp/node_modules /myapp/node_modules
|
||||
ADD package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
ADD apps apps
|
||||
ADD packages packages
|
||||
RUN pnpm prune --prod
|
||||
|
||||
FROM base AS build
|
||||
WORKDIR /myapp
|
||||
COPY --from=deps /myapp/node_modules /myapp/node_modules
|
||||
COPY --from=deps /myapp/apps /myapp/apps
|
||||
COPY --from=deps /myapp/packages /myapp/packages
|
||||
ADD package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
ADD prisma prisma
|
||||
ADD prisma.config.ts prisma.config.ts
|
||||
ADD tsconfig.json tsconfig.json
|
||||
ADD packages/db packages/db
|
||||
RUN pnpm exec prisma generate
|
||||
RUN pnpm --filter @toolctrl/db build
|
||||
ADD . .
|
||||
RUN pnpm --filter @toolctrl/hocuspocus build
|
||||
|
||||
FROM base AS hocuspocus
|
||||
ARG APP_REVISION=unknown
|
||||
ENV NODE_ENV="production"
|
||||
ENV HOCUSPOCUS_PORT="1234"
|
||||
ENV HOCUSPOCUS_HOST="0.0.0.0"
|
||||
ENV APP_REVISION="${APP_REVISION}"
|
||||
LABEL org.opencontainers.image.revision="${APP_REVISION}"
|
||||
EXPOSE 1234
|
||||
|
||||
WORKDIR /myapp
|
||||
COPY --from=production-deps /myapp/node_modules /myapp/node_modules
|
||||
COPY --from=build /myapp/package.json /myapp/package.json
|
||||
COPY --from=build /myapp/pnpm-lock.yaml /myapp/pnpm-lock.yaml
|
||||
COPY --from=build /myapp/pnpm-workspace.yaml /myapp/pnpm-workspace.yaml
|
||||
COPY --from=build /myapp/tsconfig.json /myapp/tsconfig.json
|
||||
COPY --from=build /myapp/apps/hocuspocus/package.json /myapp/apps/hocuspocus/package.json
|
||||
COPY --from=deps /myapp/apps/hocuspocus/node_modules /myapp/apps/hocuspocus/node_modules
|
||||
COPY --from=build /myapp/apps/hocuspocus/dist /myapp/apps/hocuspocus/dist
|
||||
COPY --from=build /myapp/packages/db /myapp/packages/db
|
||||
COPY --from=deps /myapp/packages/db/node_modules /myapp/packages/db/node_modules
|
||||
COPY --from=build /myapp/packages/db/generated/prisma/client /myapp/packages/db/generated/prisma/client
|
||||
COPY --from=build /myapp/packages/logger /myapp/packages/logger
|
||||
COPY --from=deps /myapp/packages/logger/node_modules /myapp/packages/logger/node_modules
|
||||
COPY --from=build /myapp/prisma /myapp/prisma
|
||||
COPY --from=build /myapp/prisma.config.ts /myapp/prisma.config.ts
|
||||
|
||||
USER node
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
||||
CMD node -e "require('net').connect(${HOCUSPOCUS_PORT:-1234}, '127.0.0.1').on('connect', () => process.exit(0)).on('error', () => process.exit(1))"
|
||||
|
||||
CMD ["node", "apps/hocuspocus/dist/index.js"]
|
||||
Reference in new issue
Block a user