# --- Build Stage ---
FROM node:20-alpine AS builder

WORKDIR /app

# Raspberry Pi ve Prisma uyumluluğu için gerekli kütüphaneler
RUN apk add --no-cache openssl libc6-compat

# pnpm kurulumu (workspace kuralı gereği)
RUN corepack enable && corepack prepare pnpm@latest --activate

# Paket dosyalarını kopyala
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

# Kaynak kodları kopyala
COPY . .

# Prisma client üret (Database şeması için şart)
RUN npx prisma generate

# Build al (NestJS/Backend için)
RUN pnpm build

# --- Production Stage (Canlı Sistem) ---
FROM node:20-alpine AS production

# Prisma için gerekli kütüphaneleri buraya da ekliyoruz
RUN apk add --no-cache openssl libc6-compat

# pnpm kurulumu
RUN corepack enable && corepack prepare pnpm@latest --activate

WORKDIR /app

COPY package.json pnpm-lock.yaml ./

# Sadece production (canlıda lazım olan) paketleri kur
RUN pnpm install --frozen-lockfile --prod

# Prisma şemasını taşı ve client üret
COPY prisma ./prisma
RUN npx prisma generate

# Build edilen dosyaları taşı
# Güvenlik için dosyaları 'node' kullanıcısına zimmetliyoruz
COPY --chown=node:node --from=builder /app/dist ./dist

# Eğer i18n varsa onu da taşı
COPY --chown=node:node --from=builder /app/src/i18n ./dist/i18n

# Ortam değişkeni
ENV NODE_ENV=production

# Portu aç
EXPOSE 3000

# Güvenlik: Root yerine 'node' kullanıcısına geç
USER node

# Uygulamayı başlat
CMD ["node", "dist/main.js"]