generic-chatbot-admin / Dockerfile
muryshev's picture
а
e2036e6
raw
history blame
1.76 kB
# Этап 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;"]