# Используем легковесный официальный образ Node.js. Alpine - это минималистичный дистрибутив Linux. FROM node:20-alpine AS builder # Устанавливаем рабочую директорию внутри контейнера WORKDIR /app #ENV USER=docker #ENV GROUPNAME=$USER #ENV UID=1000 #ENV GID=1000 # #RUN addgroup \ # --gid "$GID" \ # "$GROUPNAME" \ #&& adduser \ # --disabled-password \ # --gecos "" \ # --home "$(pwd)" \ # --ingroup "$GROUPNAME" \ # --no-create-home \ # --uid "$UID" \ # $USER # Копируем сначала только package.json и package-lock.json (если есть) # Это ключевая оптимизация! Docker будет кэшировать этот слой, и npm install # не будет запускаться каждый раз, если зависимости не менялись. COPY --chown=node:node package*.json ./ RUN chown node:node /app -R RUN echo -e 'nameserver 1.1.1.1\noptions single-request-reopen' > /etc/resolv.conf && \ su - node -c "cd /app && npm install" USER node COPY --chown=node:node . . # Команда, которая будет выполняться по умолчанию для сборки проекта CMD ["npm", "run", "build"]