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