diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b97dac128..3c0164f0c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,14 +15,13 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.15.1 run_install: false - name: Use Node.js 22 uses: actions/setup-node@v4 with: node-version: 22 cache: "pnpm" - - run: npm install --global pnpm - run: pnpm install - run: pnpm test - run: pnpm build diff --git a/Dockerfile b/Dockerfile index ac9fd8de5..e6882e048 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,14 @@ ARG NODE_IMAGE_VERSION="22-alpine" +ARG PNPM_VERSION="10.15.1" # Install dependencies only when needed FROM node:${NODE_IMAGE_VERSION} AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat WORKDIR /app -COPY package.json pnpm-lock.yaml ./ -RUN npm install -g pnpm -RUN pnpm install --frozen-lockfile +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +RUN npm install -g pnpm@${PNPM_VERSION} +RUN pnpm install --frozen-lockfile --config.strictDepBuilds=false # Rebuild the source code only when needed FROM node:${NODE_IMAGE_VERSION} AS builder @@ -28,7 +29,6 @@ RUN npm run build-docker FROM node:${NODE_IMAGE_VERSION} AS runner WORKDIR /app -ARG PRISMA_VERSION="7.3.0" ARG NODE_OPTIONS ENV NODE_ENV=production @@ -38,14 +38,7 @@ ENV NODE_OPTIONS=$NODE_OPTIONS RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs RUN set -x \ - && apk add --no-cache curl \ - && npm install -g pnpm - -# Script dependencies -RUN pnpm --allow-build='@prisma/engines' add npm-run-all dotenv chalk semver \ - prisma@${PRISMA_VERSION} \ - @prisma/client@${PRISMA_VERSION} \ - @prisma/adapter-pg@${PRISMA_VERSION} + && apk add --no-cache curl COPY --from=builder --chown=nextjs:nodejs /app/public ./public COPY --from=builder /app/prisma ./prisma @@ -57,6 +50,8 @@ COPY --from=builder /app/generated ./generated # https://nextjs.org/docs/advanced-features/output-file-tracing COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static +RUN rm -rf /app/node_modules +COPY --from=deps /app/node_modules ./node_modules USER nextjs @@ -65,4 +60,4 @@ EXPOSE 3000 ENV HOSTNAME=0.0.0.0 ENV PORT=3000 -CMD ["pnpm", "start-docker"] \ No newline at end of file +CMD ["npm", "run", "start-docker"] diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 26d7fcc42..26254479c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,7 +11,13 @@ allowBuilds: ignoredBuiltDependencies: - esbuild - sharp + - '@parcel/watcher' + - cypress onlyBuiltDependencies: - '@prisma/client' - '@prisma/engines' + - '@swc/core' + - esbuild - prisma + - sharp + - unrs-resolver