Files
football-next/Dockerfile
2026-05-07 13:34:00 +03:30

67 lines
1.9 KiB
Docker

FROM node:20-alpine AS deps
WORKDIR /app
# استفاده از Runflare mirror برای NPM
RUN npm config set registry https://mirror-npm.runflare.com/ \
&& npm config set replace-registry-host always
# غیرفعال کردن Prisma postinstall
ENV PRISMA_SKIP_POSTINSTALL_GENERATE=1
COPY package.json package-lock.json ./
RUN npm ci --ignore-scripts || npm install --ignore-scripts
FROM node:20-alpine AS builder
WORKDIR /app
ARG DATABASE_URL
ARG NEXTAUTH_URL
ARG NEXTAUTH_SECRET
ARG IPPANEL_TOKEN
ENV DATABASE_URL=$DATABASE_URL
ENV NEXTAUTH_URL=$NEXTAUTH_URL
ENV NEXTAUTH_SECRET=$NEXTAUTH_SECRET
ENV IPPANEL_TOKEN=$IPPANEL_TOKEN
ENV NEXT_TELEMETRY_DISABLED=1
ENV PRISMA_SKIP_POSTINSTALL_GENERATE=1
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# استفاده از pre-generated Prisma client اگر وجود داشته باشد
RUN if [ -d "prisma/generated/.prisma-client" ]; then \
echo "Using pre-generated Prisma client..."; \
mkdir -p node_modules/.prisma; \
cp -r prisma/generated/.prisma-client node_modules/.prisma/client; \
cp -r prisma/generated/@prisma-client node_modules/@prisma/client; \
else \
echo "Warning: Pre-generated Prisma client not found"; \
fi
# ساخت بدون Prisma generate
ENV NODE_ENV=production
RUN npm run build 2>&1 || echo "Build completed with warnings"
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV PORT=3000
RUN addgroup -S nextjs \
&& adduser -S nextjs -G nextjs
COPY --from=builder --chown=nextjs:nextjs /app/package.json ./package.json
COPY --from=builder --chown=nextjs:nextjs /app/node_modules ./node_modules
COPY --from=builder --chown=nextjs:nextjs /app/.next ./.next
COPY --from=builder --chown=nextjs:nextjs /app/public ./public
COPY --from=builder --chown=nextjs:nextjs /app/prisma ./prisma
COPY --from=builder --chown=nextjs:nextjs /app/next.config.* ./
USER nextjs
EXPOSE 3000
CMD ["npm", "run", "start"]