54 lines
1.8 KiB
Docker
54 lines
1.8 KiB
Docker
ARG SOURCE_COMMIT=unknown
|
||
|
||
# Stage 1: Vite SPA build
|
||
FROM node:22-slim AS build
|
||
WORKDIR /app
|
||
COPY package*.json ./
|
||
RUN npm ci
|
||
COPY . .
|
||
RUN npm run build
|
||
|
||
# Stage 2: nginx (frontend) + node (canlı veri backend) + Playwright/Chromium
|
||
# NOT: Chromium yalnızca doğrudan temin (EKAP anti-bot) ve ihale dokümanı
|
||
# indirme için gerekli. Sunucu darlığında DT_ENABLED=0 ile kapatılabilir;
|
||
# uygulama ve diğer tüm veri kaynakları Chromium olmadan da çalışır.
|
||
FROM node:22-slim
|
||
ARG SOURCE_COMMIT
|
||
ENV APP_RELEASE=${SOURCE_COMMIT}
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends nginx ca-certificates curl \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
WORKDIR /app
|
||
|
||
# Playwright + Chromium (yalnızca chromium; sistem bağımlılıklarıyla)
|
||
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
||
ARG ENABLE_SEMANTIC_MATCH=0
|
||
ENV UYUM_GOMME=0
|
||
RUN npm init -y >/dev/null \
|
||
&& npm i --omit=dev playwright@1.62.1 \
|
||
&& if [ "$ENABLE_SEMANTIC_MATCH" = "1" ]; then npm i --omit=dev @huggingface/transformers@3; fi \
|
||
&& npx playwright install --with-deps chromium \
|
||
&& npm cache clean --force
|
||
|
||
# Frontend
|
||
COPY --from=build /app/dist /usr/share/nginx/html
|
||
COPY --from=build /app/nginx.conf /etc/nginx/sites-available/default
|
||
|
||
# Backend (Node builtin'leri + playwright)
|
||
COPY --from=build /app/server ./server
|
||
# Backend, ortak doğrulama ve iş kurallarını src/services altından import eder.
|
||
COPY --from=build /app/src ./src
|
||
|
||
# Kalıcı veri (Coolify'da /app/server/data volume olarak bağlı)
|
||
RUN mkdir -p /app/server/data
|
||
VOLUME ["/app/server/data"]
|
||
|
||
# Başlangıç: Node backend (3001) arka planda + nginx (80) ön planda.
|
||
RUN printf '#!/bin/sh\nset -e\nPORT=3001 node /app/server/index.js &\nexec nginx -g "daemon off;"\n' > /start.sh \
|
||
&& chmod +x /start.sh
|
||
|
||
EXPOSE 80
|
||
CMD ["/start.sh"]
|