better-sqlite3'ün native modülü Alpine tabanlı imajda derlenemiyordu
(node-gyp Python/make/g++ bulamadığı için npm ci başarısız oluyordu) —
bu, Faz 4'te better-sqlite3 eklendiğinden beri (7468486) production
deploy'unu kırıyordu. Builder aşamasına kalıcı, runner aşamasına
geçici (.build-deps, npm ci sonrası kaldırılıyor) build araçları
eklendi.
41 lines
1.1 KiB
Docker
41 lines
1.1 KiB
Docker
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"]
|