FROM node:22-alpine AS builder WORKDIR /app # better-sqlite3 native modülünü derleyebilmek için (prebuild indirilemezse # node-gyp'in Python/make/g++'a ihtiyacı var — Alpine imajında varsayılan yok). RUN apk add --no-cache python3 make g++ # Paket dosyalarını kopyala ve bağımlılıkları yükle COPY package*.json ./ RUN npm ci # Kaynak kodları kopyala ve derle COPY . . RUN npm run build FROM node:22-alpine AS runner WORKDIR /app # Sadece production bağımlılıklarını yükle (daha küçük imaj boyutu) — build # araçları geçici (.build-deps) olarak eklenip npm ci sonrası kaldırılır, # nihai imaj şişmez ama better-sqlite3 yine de derlenebilir. COPY package*.json ./ RUN apk add --no-cache --virtual .build-deps python3 make g++ \ && npm ci --omit=dev \ && apk del .build-deps # Derlenmiş kodları builder aşamasından al COPY --from=builder /app/dist ./dist # Uygulama portunu belirt EXPOSE 3001 # Gerekli ortam değişkenleri (Coolify üzerinden de ezilebilir) ENV PORT=3001 ENV NODE_ENV=production # Uygulamayı başlat CMD ["npm", "start"]