# زهورا — ایمیج production (Next.js + Prisma)
# ساخت:   docker build -t zahora .
# اجرا:   docker run --env-file .env -p 3000:3000 -v zahora-uploads:/app/.data/uploads zahora
# متغیرهای محیطی (از جمله DATABASE_URL) هنگام اجرا داده می‌شوند، نه داخل ایمیج.
FROM node:22-bookworm-slim AS build
WORKDIR /app
COPY package.json package-lock.json ./
COPY prisma ./prisma
COPY prisma.config.ts ./
# build صفحات را از دیتابیس می‌سازد، پس آدرس دیتابیس واقعی هنگام build لازم است:
#   docker build --build-arg DATABASE_URL=postgresql://... -t zahora .
ARG DATABASE_URL=postgresql://build:build@localhost:5432/build
ENV DATABASE_URL=$DATABASE_URL
RUN npm ci
COPY . .
# دامنه و محل عکس‌ها در build هم خوانده می‌شوند (برای هدرهای امنیتی و SEO)
ARG NEXT_PUBLIC_SITE_URL=https://example.com
ARG STORAGE_DRIVER=local
ARG S3_PUBLIC_URL=
ENV NEXT_PUBLIC_SITE_URL=$NEXT_PUBLIC_SITE_URL STORAGE_DRIVER=$STORAGE_DRIVER S3_PUBLIC_URL=$S3_PUBLIC_URL NEXT_TELEMETRY_DISABLED=1
RUN npm run build

FROM node:22-bookworm-slim
WORKDIR /app
ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 PORT=3000
COPY --from=build /app ./
RUN mkdir -p .data/uploads && chown -R node:node .data
USER node
EXPOSE 3000
# هر بار شروع: اعمال migrationها و داده‌های پایه (تکرارش بی‌خطر است)، بعد اجرای سایت
CMD ["sh", "-c", "npm run db:deploy && npm run db:setup && npm start"]
