Files
BarevClub/infra/prod/Dockerfile
T
zabudko-ruandClaude Opus 5.5 dda917fc71 Prod: new admin on admin.*, old admin moves to admin.*/old/
Dockerfile builds apps/backoffice into /srv/admin and the old admin with
base /old/; nginx serves /old/ with its own uncached index.html.
Worker notification links point to the new admin pages (moves, requests,
chats); BACKOFFICE_URL defaults to ADMIN_URL.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-21 04:22:36 +04:00

41 lines
2.1 KiB
Docker

# Barev Club — образы для продакшена.
# app — Node: API + воркер + боты (один процесс) и лендинг Next.js (тот же образ)
# web — nginx: статика Mini App и админки + прокси /trpc и /files на API
# admin.* — новая админка (apps/backoffice), admin.*/old/ — старая (apps/admin)
FROM node:22-alpine AS deps
RUN corepack enable
WORKDIR /repo
COPY . .
RUN pnpm install --frozen-lockfile
FROM deps AS build
# адреса, которые зашиваются в клиентский код при сборке
ARG LANDING_URL
ARG API_PUBLIC_URL
ARG CLIENT_BOT_USERNAME=barevclub_bot
ENV VITE_LANDING_URL=$LANDING_URL NEXT_PUBLIC_API_URL=$API_PUBLIC_URL CLIENT_BOT_USERNAME=$CLIENT_BOT_USERNAME NEXT_TELEMETRY_DISABLED=1
RUN pnpm --filter @barev/miniapp-client build \
&& pnpm --filter @barev/miniapp-pro build \
&& ADMIN_BASE=/old/ pnpm --filter @barev/admin build \
&& VITE_OLD_ADMIN_URL=/old/ pnpm --filter @barev/backoffice build \
&& pnpm --filter @barev/landing build
FROM nginx:alpine AS web
COPY --from=build /repo/apps/miniapp-client/dist /srv/client
COPY --from=build /repo/apps/miniapp-pro/dist /srv/pro
COPY --from=build /repo/apps/backoffice/dist /srv/admin
COPY --from=build /repo/apps/admin/dist /srv/admin/old
COPY infra/prod/nginx.conf /etc/nginx/conf.d/default.conf
FROM node:22-alpine AS app
RUN corepack enable
WORKDIR /repo
ENV NODE_ENV=production TZ=Asia/Yerevan
COPY --from=deps /repo /repo
# лендинг: standalone-сборка со своими node_modules
COPY --from=build /repo/apps/landing/.next/standalone /landing
COPY --from=build /repo/apps/landing/.next/static /landing/apps/landing/.next/static
EXPOSE 4000 3000
# при старте: миграции и синхронизация каталога, затем API + воркер + боты
CMD ["sh", "-c", "cd packages/db && ./node_modules/.bin/prisma migrate deploy && ./node_modules/.bin/tsx src/scripts/sync-catalog.ts && cd /repo && exec apps/runtime/node_modules/.bin/tsx apps/runtime/index.ts"]