# Dockerfile — Web SPA (ADR-W: React+TS+Vite → статика в nginx).
# Multi-stage: build в node:20-alpine, рантайм — nginx:alpine со статикой dist/.
# Build-context = корень Code/ (как у .NET-сервисов); WORKDIR указывает на care-web.
# nginx.conf подключается volume-ом из deploy/trial/nginx/ (trial vs prod — разные файлы).
#
# Запуск: см. deploy/trial/docker-compose.yml, сервис `web`.

# ── stage 1: build ────────────────────────────────────────────────────────────
FROM node:20-alpine AS build
WORKDIR /app
# Кэш-слои: сначала манифесты, потом исходники (npm install только при смене deps).
COPY src/Web/care-web/package.json src/Web/care-web/package-lock.json ./
RUN npm ci
COPY src/Web/care-web/ ./
# Vite inlines VITE_* at build time (must be set before npm run build).
ARG VITE_APP_VERSION=dev
ENV VITE_APP_VERSION=$VITE_APP_VERSION
ARG VITE_ENABLE_TSD_SMOKE=0
ENV VITE_ENABLE_TSD_SMOKE=$VITE_ENABLE_TSD_SMOKE
RUN npm run build      # → /app/dist (index.html + assets/ + Tabler fonts)

# ── stage 2: runtime ──────────────────────────────────────────────────────────
FROM nginx:alpine
# Статика SPA. nginx.conf монтируется compose-ом (trial/prod) — в образе не фиксируем.
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
