FROM node:20-alpine AS deps WORKDIR /app COPY package.json package-lock.json* ./ COPY shared ./shared COPY backend ./backend # Увеличенные таймауты для нестабильной сети RUN npm config set fetch-retry-mintimeout 20000 && \ npm config set fetch-retry-maxtimeout 120000 && \ npm config set fetch-timeout 300000 RUN npm install FROM node:20-alpine AS build WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/package.json ./ COPY --from=deps /app/shared ./shared COPY --from=deps /app/backend ./backend RUN npm run build -w @family-budget/shared RUN npm run build -w @family-budget/backend FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production # @napi-rs/canvas (dep of pdf-parse) ships a musl pre-built binary that # needs these compatibility / font libraries at runtime. RUN apk add --no-cache libc6-compat fontconfig freetype COPY --from=build /app/backend/dist ./dist COPY --from=build /app/backend/package.json ./package.json COPY --from=build /app/node_modules ./node_modules COPY backend/.env .env EXPOSE 3000 CMD ["node","dist/app.js"]