FROM node:20-alpine WORKDIR /app # Chromium для Puppeteer (PDF рендер) + шрифты для кириллицы. # nss/freetype/harfbuzz нужны самому chromium для рендера, ttf-* — для текста. RUN apk add --no-cache \ openssl \ tini \ chromium \ nss \ freetype \ harfbuzz \ ca-certificates \ ttf-dejavu \ ttf-liberation \ font-noto-cjk ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ENV PUPPETEER_SKIP_DOWNLOAD=true COPY package.json package-lock.json* tsconfig.base.json ./ COPY apps/api/package.json apps/api/ COPY packages/shared/package.json packages/shared/ RUN npm install --include=dev COPY apps/api ./apps/api COPY packages/shared ./packages/shared RUN cd apps/api && npx prisma generate ENV NODE_ENV=production WORKDIR /app/apps/api EXPOSE 3030 ENTRYPOINT ["/sbin/tini", "--"] CMD ["sh", "-c", "npx prisma migrate deploy && npx tsx src/server.ts"]