Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FROM node:20-alpine AS base
- ENV PNPM_HOME="/pnpm"
- ENV PATH="$PNPM_HOME:$PATH"
- RUN npm install -g pnpm && pnpm add -g turbo
- FROM base AS builder
- RUN apk add --no-cache libc6-compat
- RUN apk update
- WORKDIR /app
- COPY . .
- RUN turbo prune @myapp/merlin --docker
- RUN rm -rf /app/out/full/*/*/node_modules
- # Add lockfile and package.json's of isolated subworkspace
- FROM base AS installer
- RUN apk add --no-cache libc6-compat
- RUN apk update
- WORKDIR /app
- # First install the dependencies (as they change less often)
- COPY .gitignore .gitignore
- COPY --from=builder /app/out/json/ .
- COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
- RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install
- # Build the project
- COPY --from=builder /app/out/full/ .
- RUN turbo run build --filter=@myapp/merlin
- ENV SKIP_ENV_VALIDATION=
- FROM base AS runner
- WORKDIR /app
- RUN npm i -g --arch=x64 --platform=linux --libc=glibc [email protected]
- # Don't run production as root
- RUN addgroup --system --gid 1001 nodejs
- RUN adduser --system --uid 1001 nextjs
- USER nextjs
- EXPOSE 3000
- ENV PORT 3000
- ENV HOSTNAME 0.0.0.0
- COPY --from=installer /app/apps/nextjs/next.config.mjs .
- COPY --from=installer /app/apps/nextjs/package.json .
- # Automatically leverage output traces to reduce image size
- # https://nextjs.org/docs/advanced-features/output-file-tracing
- COPY --from=installer --chown=nextjs:nodejs /app/apps/nextjs/.next/standalone .
- COPY --from=installer --chown=nextjs:nodejs /app/apps/nextjs/.next/static ./apps/nextjs/.next/static
- COPY --from=installer --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/public
- ENV NEXT_SHARP_PATH=/usr/local/lib/node_modules/sharp
- # Copy migrations over
- COPY apps/nextjs/src/server/db/migrations /app/apps/nextjs/src/server/db/migrations
- CMD node apps/nextjs/server.js
Advertisement
Add Comment
Please, Sign In to add comment