# Один файл — два образа: api (бэкенд, бот, парсер) и web (кабинет и Mini App за nginx). FROM node:22-alpine AS base RUN corepack enable WORKDIR /app COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./ COPY apps/api/package.json apps/api/ COPY apps/web/package.json apps/web/ COPY packages/shared/package.json packages/shared/ RUN pnpm install --frozen-lockfile COPY . . FROM base AS webbuild RUN pnpm --filter @lr/web build FROM nginx:alpine AS web COPY deploy/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=webbuild /app/apps/web/dist /usr/share/nginx/html FROM base AS api ENV NODE_ENV=production WORKDIR /app/apps/api # Сначала миграции базы, затем сервис. CMD ["sh", "-c", "node --import tsx src/db/migrate.ts && exec node --import tsx src/main.ts"]