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
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"]
|