# syntax=docker/dockerfile:1 # Образ `web` = nginx + собранная SPA + конфиг (TLS, прокси на api, X-Accel-раздача аудио). # Сборка из корня репозитория: docker build -f apps/web/Dockerfile --build-arg VERSION=1.2.3 . FROM node:22-alpine AS build RUN npm install -g pnpm@11.9.0 WORKDIR /repo COPY . . RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ pnpm install --frozen-lockfile --filter @pipu/web... # Сгенерированные клиенты и токены лежат в репозитории (их актуальность проверяет CI), поэтому generate здесь не нужен. RUN pnpm --filter @pipu/web build FROM nginx:1.28-alpine COPY deploy/nginx/default.conf.template /etc/nginx/templates/default.conf.template COPY deploy/nginx/security-headers.conf /etc/nginx/snippets/security-headers.conf COPY --from=build /repo/apps/web/dist /usr/share/nginx/html ARG VERSION=0.0.0-dev LABEL org.opencontainers.image.version=${VERSION} ENV API_UPSTREAM=api:8080 EXPOSE 80