ARG NODE_IMAGE_VERSION=22-alpine ARG PNPM_VERSION=10.15.1 FROM node:${NODE_IMAGE_VERSION} AS base ARG PNPM_VERSION RUN apk add --no-cache curl libc6-compat \ && npm install --global pnpm@${PNPM_VERSION} WORKDIR /app FROM base AS deps COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ RUN pnpm install --frozen-lockfile FROM deps AS builder ARG BASE_PATH COPY . . ENV BASE_PATH=${BASE_PATH} ENV NEXT_TELEMETRY_DISABLED=1 ENV DATABASE_URL=postgresql://user:pass@localhost:5432/dummy ENV SKIP_DB_CHECK=1 ENV SKIP_BUILD_GEO=1 RUN pnpm build FROM base AS runner ARG NODE_OPTIONS RUN addgroup --system --gid 1001 nodejs \ && adduser --system --uid 1001 --ingroup nodejs nextjs ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 ENV NODE_OPTIONS=${NODE_OPTIONS} ENV HOSTNAME=0.0.0.0 ENV PORT=3000 COPY --from=builder --chown=nextjs:nodejs /app/package.json ./package.json COPY --from=builder --chown=nextjs:nodejs /app/pnpm-lock.yaml ./pnpm-lock.yaml COPY --from=builder --chown=nextjs:nodejs /app/pnpm-workspace.yaml ./pnpm-workspace.yaml COPY --from=builder --chown=nextjs:nodejs /app/next.config.ts ./next.config.ts COPY --from=builder --chown=nextjs:nodejs /app/prisma.config.ts ./prisma.config.ts COPY --from=builder --chown=nextjs:nodejs /app/prisma ./prisma COPY --from=builder --chown=nextjs:nodejs /app/docker/entrypoint.sh ./docker-entrypoint.sh COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules COPY --from=builder --chown=nextjs:nodejs /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next RUN sed -i 's/\r$//' ./docker-entrypoint.sh \ && chmod +x ./docker-entrypoint.sh USER nextjs EXPOSE 3000 ENTRYPOINT ["./docker-entrypoint.sh"] CMD ["pnpm", "start"]