Fix supervisor builds (#1790)

* fix and restructure dockerignore

* switch to using pnpm deploy

* pass webapp node image as build arg

* ensure pnpm is downloaded at build, not runtime
This commit is contained in:
nicktrn
2025-03-12 16:10:37 +00:00
committed by GitHub
parent 3a0475930f
commit 7f2569721e
3 changed files with 48 additions and 64 deletions
+30 -38
View File
@@ -1,44 +1,23 @@
\*.log
.git
.github
**/*.log
**/*.pem
**/*.tsbuildinfo
# editor
.idea
.vscode
# dependencies
**/.cache
**/.env
**/.next
**/.output
**/.trigger
**/.tshy
**/.tshy-build
**/.turbo
**/.vercel
**/.wrangler
**/dist
**/node_modules
.pnp
.pnp.js
# testing
coverage
# next.js
.next/
build
# packages
build
dist
packages/\*\*/dist
# misc
.DS_Store
\*.pem
.turbo
.vercel
.cache
.output
.trigger
apps/\*\*/public/build
apps/webapp/build
apps/webapp/public/build
cypress/screenshots
cypress/videos
@@ -47,8 +26,21 @@ apps/**/styles/tailwind.css
packages/**/styles/tailwind.css
.changeset
references
.DS_Store
.git
.github
.idea
.pnp
.pnp.js
.vscode
coverage
build
docs
examples
out
references
CHANGESETS.md
CONTRIBUTING.md
README.md
+13 -23
View File
@@ -6,7 +6,6 @@ FROM node-22-alpine AS pruner
COPY --chown=node:node . .
RUN npx -q turbo@1.10.9 prune --scope=supervisor --docker
RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
FROM node-22-alpine AS base
@@ -17,26 +16,17 @@ COPY --from=pruner --chown=node:node /app/out/json/ .
COPY --from=pruner --chown=node:node /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
COPY --from=pruner --chown=node:node /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
FROM base AS dev-deps
RUN corepack enable
RUN corepack enable && corepack prepare --activate
FROM base AS deps-fetcher
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --frozen-lockfile
FROM deps-fetcher AS dev-deps
ENV NODE_ENV development
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --no-frozen-lockfile
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --ignore-scripts --no-frozen-lockfile
FROM base AS prod-deps
RUN corepack enable
ENV NODE_ENV production
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --prod --no-frozen-lockfile
COPY --from=pruner --chown=node:node /app/internal-packages/database/prisma/schema.prisma /app/internal-packages/database/prisma/schema.prisma
ENV NPM_CONFIG_IGNORE_WORKSPACE_ROOT_CHECK true
RUN pnpx prisma@5.4.1 generate --schema /app/internal-packages/database/prisma/schema.prisma
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile --offline --ignore-scripts
FROM base AS builder
RUN corepack enable
COPY --from=pruner --chown=node:node /app/out/full/ .
COPY --from=dev-deps --chown=node:node /app/ .
@@ -45,19 +35,19 @@ COPY --chown=node:node .configs/tsconfig.base.json .configs/tsconfig.base.json
COPY --chown=node:node scripts/updateVersion.ts scripts/updateVersion.ts
RUN pnpm run generate && \
pnpm run -r --filter supervisor... build
pnpm run --filter supervisor... build&& \
pnpm deploy --filter=supervisor --prod /prod/supervisor
FROM base AS runner
RUN corepack enable
ENV NODE_ENV production
COPY --from=pruner --chown=node:node /app/out/full/ .
COPY --from=prod-deps --chown=node:node /app .
COPY --from=builder --chown=node:node /app/apps/supervisor ./apps/supervisor
COPY --from=builder /prod/supervisor /app/apps/supervisor
EXPOSE 8000
USER node
# ensure pnpm is installed during build and not silently downloaded at runtime
RUN pnpm -v
CMD [ "/usr/bin/dumb-init", "--", "pnpm", "run", "--filter", "supervisor", "start"]
+5 -3
View File
@@ -1,4 +1,6 @@
FROM node:20.11.1-bullseye-slim@sha256:5a5a92b3a8d392691c983719dbdc65d9f30085d6dcd65376e7a32e6fe9bf4cbe AS pruner
ARG NODE_IMAGE=node:20.11.1-bullseye-slim@sha256:5a5a92b3a8d392691c983719dbdc65d9f30085d6dcd65376e7a32e6fe9bf4cbe
FROM ${NODE_IMAGE} AS pruner
WORKDIR /triggerdotdev
@@ -7,7 +9,7 @@ RUN npx -q turbo@1.10.9 prune --scope=webapp --docker
RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
# Base strategy to have layer caching
FROM node:20.11.1-bullseye-slim@sha256:5a5a92b3a8d392691c983719dbdc65d9f30085d6dcd65376e7a32e6fe9bf4cbe AS base
FROM ${NODE_IMAGE} AS base
RUN apt-get update && apt-get install -y openssl dumb-init
WORKDIR /triggerdotdev
COPY --chown=node:node .gitignore .gitignore
@@ -53,7 +55,7 @@ RUN pnpm run generate
RUN pnpm run build --filter=webapp...
# Runner
FROM node:20.11.1-bullseye-slim@sha256:5a5a92b3a8d392691c983719dbdc65d9f30085d6dcd65376e7a32e6fe9bf4cbe AS runner
FROM ${NODE_IMAGE} AS runner
RUN apt-get update && apt-get install -y openssl netcat-openbsd ca-certificates
WORKDIR /triggerdotdev
RUN corepack enable