You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.3 KiB
Docker

# Используем легковесный официальный образ 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"]