magicboris commited on
Commit
231df52
·
verified ·
1 Parent(s): 25b2d05

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +22 -24
Dockerfile CHANGED
@@ -1,40 +1,38 @@
1
- # ---------- build-stage 1: Python backend ----------
2
- FROM python:3.11-slim AS backend-builder
3
  WORKDIR /opt/udr
4
-
5
- # Скопировать backend-код и зависимости
6
  COPY backend/requirements.txt backend/
7
  RUN pip install --no-cache-dir -r backend/requirements.txt
8
-
9
  COPY backend/ backend/
10
 
11
- # ---------- build-stage 2: Node frontend ----------
12
- FROM node:20-alpine AS frontend-builder
13
  WORKDIR /opt/udr/frontend
14
- COPY frontend/package.json frontend/package-lock.json ./
15
  RUN npm ci
16
  COPY frontend/ ./
17
- RUN npm run build # генерирует /.next статические файлы
18
 
19
- # ---------- final image: объединяем всё ----------
20
- FROM python:3.11-slim
21
  WORKDIR /opt/udr
22
 
23
- # --- системные пакеты ---
24
- RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
 
 
 
25
 
26
- # --- скопировать backend (из builder) ---
27
- COPY --from=backend-builder /usr/local/lib/python3.11 /usr/local/lib/python3.11
28
- COPY --from=backend-builder /opt/udr/backend /opt/udr/backend
29
 
30
- # --- скопировать статический фронт ---
31
- COPY --from=frontend-builder /opt/udr/frontend/.next /opt/udr/frontend/.next
32
- COPY --from=frontend-builder /opt/udr/frontend/public /opt/udr/frontend/public
33
- ENV NEXT_PUBLIC_BACKEND_URL=/api
34
-
35
- # ---------- запуск ----------
36
  ENV PYTHONUNBUFFERED=1
37
  ENV PYTHONPATH=/opt/udr
 
 
 
38
  EXPOSE 7860
39
- CMD ["python", "-m", "uvicorn", "backend.main:app", \
40
- "--host", "0.0.0.0", "--port", "7860", "--proxy-headers", "--root-path", "/api"]
 
 
1
+ # ---------- build backend ----------
2
+ FROM python:3.10-slim AS backend
3
  WORKDIR /opt/udr
 
 
4
  COPY backend/requirements.txt backend/
5
  RUN pip install --no-cache-dir -r backend/requirements.txt
 
6
  COPY backend/ backend/
7
 
8
+ # ---------- build frontend ----------
9
+ FROM node:18-alpine AS frontend
10
  WORKDIR /opt/udr/frontend
11
+ COPY frontend/package*.json ./
12
  RUN npm ci
13
  COPY frontend/ ./
14
+ RUN npm run build # создает /.next
15
 
16
+ # ---------- final image ----------
17
+ FROM python:3.10-slim
18
  WORKDIR /opt/udr
19
 
20
+ # файлы из двух предыдущих стадий
21
+ COPY --from=backend /usr/local /usr/local
22
+ COPY --from=backend /opt/udr/backend /opt/udr/backend
23
+ COPY --from=frontend /opt/udr/frontend/.next /opt/udr/frontend/.next
24
+ COPY --from=frontend /opt/udr/frontend/public /opt/udr/frontend/public
25
 
26
+ # корневые питон-модули (важно!)
27
+ COPY items.py scan_research*.py clients.py config.py /opt/udr/
 
28
 
29
+ # окружение
 
 
 
 
 
30
  ENV PYTHONUNBUFFERED=1
31
  ENV PYTHONPATH=/opt/udr
32
+ ENV NEXT_PUBLIC_BACKEND_BASE_URL=/api
33
+ ENV NEXT_PUBLIC_BACKEND_PORT=7860
34
+
35
  EXPOSE 7860
36
+ CMD ["python","-m","uvicorn","backend.main:app",
37
+ "--host","0.0.0.0","--port","7860",
38
+ "--proxy-headers","--root-path","/api"]