Spaces:
Sleeping
Sleeping
File size: 1,756 Bytes
1f60a7d 79278ec ce1a88d 79278ec ce1a88d 1f60a7d 79278ec 1f60a7d 2f50eab e2036e6 2f50eab e2036e6 aa69a1c 2f50eab e2036e6 2f50eab e2036e6 2f50eab e2036e6 2f50eab e2036e6 2f50eab e2036e6 2f50eab e2036e6 2f50eab e2036e6 2f50eab 79278ec 8fbfd3a 2f50eab 8fbfd3a 2f50eab 8fbfd3a 1f60a7d 23960c1 8fbfd3a 1f60a7d e2036e6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# Этап 1: Сборка фронтенда
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci
COPY . ./
ARG VITE_API_BASE_URL=/api
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
RUN npm run build
# Этап 2: Финальный образ с Nginx
FROM nginx:alpine
USER root # Запускаем от root, чтобы корректно настроить права
# Создаём непривилегированного пользователя
RUN adduser -D -u 1000 -s /bin/sh pn
# Создаём нужные директории и устанавливаем права
RUN mkdir -p /var/cache/nginx \
/var/log/nginx \
/var/lib/nginx \
/var/run \
/tmp/nginx/client_temp \
/tmp/nginx/proxy_temp \
/tmp/nginx/fastcgi_temp \
/tmp/nginx/uwsgi_temp \
/tmp/nginx/scgi_temp
RUN touch /var/run/nginx.pid
# Даём права на директории, чтобы Nginx мог их использовать
RUN chown -R pn:pn /var/cache/nginx \
/var/log/nginx \
/var/lib/nginx \
/var/run/nginx.pid \
/tmp/nginx
USER pn # Запускаем Nginx от пользователя pn
ENV HOME=/home/pn \
PATH=/home/pn/.local/bin:$PATH
RUN mkdir -p $HOME/app
WORKDIR $HOME/app
# Копируем собранные файлы фронтенда
COPY --chown=pn --from=builder /app/dist .
# Копируем конфигурацию Nginx
COPY --chown=pn devops/nginx.default.conf /etc/nginx/conf.d/default.conf
# Открываем порт 7860
EXPOSE 7860
# Запускаем Nginx
CMD ["nginx", "-g", "daemon off;"]
|