# syntax=docker/dockerfile:1 # 1. Сборка Angular FROM node:24-alpine AS build WORKDIR /ui # Сначала только манифесты — слой с зависимостями пересобирается лишь при их изменении. # npm install, а не npm ci: сборка не должна падать, если package-lock.json разошёлся с package.json COPY package*.json ./ RUN --mount=type=cache,target=/root/.npm \ npm install --legacy-peer-deps --no-audit --no-fund COPY . ./ RUN npx ng build # 2. Раздача статики через nginx; /api проксируется на бэкенд FROM nginx:alpine COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /ui/static/browser /usr/share/nginx/html EXPOSE 80 HEALTHCHECK --interval=15s --timeout=5s --start-period=10s --retries=5 \ CMD wget -q --spider http://127.0.0.1/ || exit 1