# syntax=docker/dockerfile:1 # # Собирается с контекстом = корень репозитория (см. docker-compose.yml), # потому что финальный слой берёт docker/nginx.frontend.conf из соседней # директории — Docker не даёт COPY выйти за пределы build context иначе. FROM node:22-alpine AS build WORKDIR /app # Зависимости — отдельным слоем, чтобы правка исходников не переустанавливала node_modules. COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ . RUN npm run build FROM nginx:1.27-alpine AS runtime COPY --from=build /app/dist /usr/share/nginx/html COPY docker/nginx.frontend.conf /etc/nginx/conf.d/default.conf EXPOSE 80 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD wget -qO- http://127.0.0.1/ >/dev/null || exit 1