Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
24 lines
863 B
Docker
24 lines
863 B
Docker
# Один файл — два образа: 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"]
|