orchestrator/Dockerfile
Rama main · réplica de lectura del repositorio original.
# Build from monorepo root: docker build -f orchestrator/Dockerfile .
# Override CMD in Compose for each BullMQ worker entrypoint.
ARG NODE_VERSION=24.22.1-bookworm-slim
FROM node:${NODE_VERSION} AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable && corepack prepare pnpm@10.30.3 --activate
WORKDIR /app
FROM base AS deps
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY common/package.json common/
COPY backend/package.json backend/
COPY orchestrator/package.json orchestrator/
RUN pnpm install --frozen-lockfile --ignore-scripts \
--filter openquok-orchestrator \
--filter backend \
--filter openquok-common \
&& pnpm rebuild esbuild sharp
FROM deps AS build
COPY common common
COPY backend backend
COPY orchestrator orchestrator
COPY scripts/generate-routes-manifest.mjs scripts/
COPY web/src/routes web/src/routes
ENV NODE_ENV=production
ENV NODE_OPTIONS=--max-old-space-size=8192
RUN pnpm --filter openquok-common build \
&& node scripts/generate-routes-manifest.mjs \
&& pnpm --filter backend build \
&& pnpm --filter openquok-orchestrator build
FROM base AS runtime
ENV NODE_ENV=production
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY common/package.json common/
COPY backend/package.json backend/
COPY orchestrator/package.json orchestrator/
COPY --from=build /app/common/dist common/dist
COPY --from=build /app/backend/dist backend/dist
COPY --from=build /app/orchestrator/dist orchestrator/dist
RUN pnpm install --frozen-lockfile --prod --ignore-scripts \
--filter openquok-orchestrator \
--filter backend \
--filter openquok-common \
&& pnpm rebuild sharp \
&& chown -R node:node /app
USER node
WORKDIR /app/orchestrator
EXPOSE 3091
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
CMD node -e "fetch('http://127.0.0.1:3091/health').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
CMD ["node", "dist/worker/runIntegrationRefreshBullMqWorker.js"]