# ---------- Этап 1: сборка фронтенда (Vite → статика) ----------
FROM node:24-bookworm-slim AS client
WORKDIR /client
COPY client/package*.json ./
RUN npm install
COPY client/ ./
RUN npm run build

# ---------- Этап 2: зависимости сервера (с инструментами сборки для нативного better-sqlite3) ----------
FROM node:24-bookworm AS server-deps
WORKDIR /server
COPY server/package*.json ./
RUN npm install --omit=dev

# ---------- Этап 3: финальный образ (лёгкий runtime) ----------
FROM node:24-bookworm-slim
WORKDIR /app/server
ENV NODE_ENV=production

# node_modules с уже собранным бинарником better-sqlite3
COPY --from=server-deps /server/node_modules ./node_modules
# исходники сервера (.env и data исключены через .dockerignore)
COPY server/ ./
# собранный фронтенд — сервер раздаёт его сам
COPY --from=client /client/dist /app/client/dist

EXPOSE 4000
CMD ["node", "src/index.js"]
