Files
family_budget/Dockerfile.frontend
vakabunga feb756cfe2 fix(docker): prevent backend crash loop caused by pdf-parse native deps
pdf-parse@2.4.5 pulls in @napi-rs/canvas (native Skia binary) which
crashes on import in Alpine containers. Moved to lazy require() so the
app starts normally and pdf-parse loads only when PDF conversion is
actually requested.
- Lazy-load pdf-parse in pdfToStatement to avoid startup crash
- Add libc6-compat, fontconfig, freetype to Alpine runner stage
- Increase npm fetch timeouts in both Dockerfiles for slow networks
- Add connectionTimeoutMillis to pg Pool for faster failure detection
2026-03-14 13:37:34 +03:00

31 lines
1.1 KiB
Docker

FROM node:20-alpine AS builder
WORKDIR /app
# Копируем корень и конфигурации
COPY package.json package-lock.json* tsconfig.json* ./
# Копируем исходники воркспэйсов
COPY shared ./shared
COPY frontend ./frontend
# Увеличиваем таймауты и повторы для нестабильной сети
RUN npm config set fetch-retry-mintimeout 20000 && \
npm config set fetch-retry-maxtimeout 120000 && \
npm config set fetch-timeout 300000
# Устанавливаем зависимости из корня
RUN npm install
# Сначала собираем shared (если там есть скрипт build)
RUN npm run build -w @family-budget/shared || echo "No build script in shared, skipping..."
# Теперь собираем frontend
RUN npm run build -w @family-budget/frontend
# Финальный образ — nginx для раздачи статики
FROM nginx:alpine
COPY --from=builder /app/frontend/dist /usr/share/nginx/html
COPY frontend/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80