# Используем легковесный официальный образ Node.js. Alpine - это минималистичный дистрибутив Linux. FROM node:20-alpine AS builder # Устанавливаем рабочую директорию внутри контейнера WORKDIR /app # Копируем сначала только package.json и package-lock.json (если есть) # Это ключевая оптимизация! Docker будет кэшировать этот слой, и npm install # не будет запускаться каждый раз, если зависимости не менялись. COPY package*.json ./ RUN echo -e 'nameserver 1.1.1.1\noptions single-request-reopen' > /etc/resolv.conf && \ cat /etc/resolv.conf && \ npm install --verbose # Теперь копируем все остальные исходники COPY . . # Команда, которая будет выполняться по умолчанию для сборки проекта CMD ["npm", "run", "build"]