adeem6 commited on
Commit
dacda6c
ยท
verified ยท
1 Parent(s): 4875bde

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +25 -79
Dockerfile CHANGED
@@ -1,99 +1,45 @@
1
- # โ”€โ”€ Stage 1: Build React frontend โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2
  FROM node:18-slim AS frontend-build
3
-
4
  WORKDIR /app/frontend
5
-
6
- # Install dependencies
7
  COPY frontend/package*.json ./
8
  RUN npm ci
9
-
10
- # Copy source and build
11
  COPY frontend/ ./
12
- # Point API to same host (served via nginx proxy)
13
  ENV VITE_API_BASE_URL=/api
14
  RUN npm run build
15
 
16
- # โ”€โ”€ Stage 2: Final image โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
17
  FROM python:3.10-slim
18
 
19
- # System deps for OpenCV + YOLO
20
  RUN apt-get update && apt-get install -y --no-install-recommends \
21
- libgl1 \
22
- libglib2.0-0 \
23
- libsm6 \
24
- libxext6 \
25
- libxrender-dev \
26
- nginx \
27
  && rm -rf /var/lib/apt/lists/*
28
 
29
- WORKDIR /app
30
-
31
- # โ”€โ”€ Python deps โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
32
- COPY backend/requirements.txt ./
33
- RUN pip install --no-cache-dir -r requirements.txt
34
-
35
- # โ”€โ”€ Backend source โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
36
- COPY backend/ ./backend/
37
-
38
- # โ”€โ”€ Frontend build output โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
39
- COPY --from=frontend-build /app/frontend/dist /app/frontend/dist
40
-
41
- # Copy Hajj videos so the pipeline can find them
42
- COPY frontend/public/hajj_real_video.mp4 ./backend/hajj_real_video.mp4
43
- COPY frontend/public/hajj_video_h264.mp4 ./backend/hajj_video_h264.mp4
44
 
45
- # โ”€โ”€ Nginx config: serve frontend + proxy /api โ†’ FastAPI โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
46
- RUN cat > /etc/nginx/sites-available/default << 'EOF'
47
- server {
48
- listen 7860;
49
- server_name _;
50
 
51
- # Serve React build
52
- root /app/frontend/dist;
53
- index index.html;
54
 
55
- # Proxy API calls to FastAPI
56
- location /api/ {
57
- proxy_pass http://127.0.0.1:8000/api/;
58
- proxy_http_version 1.1;
59
- proxy_set_header Host $host;
60
- proxy_set_header X-Real-IP $remote_addr;
61
- proxy_read_timeout 120s;
62
- }
63
 
64
- location /health {
65
- proxy_pass http://127.0.0.1:8000/health;
66
- }
 
 
67
 
68
- # SPA fallback โ€” all unknown routes โ†’ index.html
69
- location / {
70
- try_files $uri $uri/ /index.html;
71
- }
72
- }
73
- EOF
74
-
75
- # โ”€โ”€ Startup script โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
76
- RUN cat > /app/start.sh << 'EOF'
77
- #!/bin/bash
78
- set -e
79
-
80
- echo "Starting FastAPI backend..."
81
- cd /app/backend
82
- uvicorn api:app --host 127.0.0.1 --port 8000 &
83
-
84
- echo "Starting Nginx..."
85
- nginx -g "daemon off;" &
86
-
87
- wait -n
88
- EOF
89
- RUN chmod +x /app/start.sh
90
-
91
- # HuggingFace Spaces requires port 7860
92
  EXPOSE 7860
93
 
94
- # Create a user and give permissions
95
- RUN useradd -m -u 1000 user
96
- RUN chown -R user:user /app /var/cache/nginx /var/run /var/log/nginx
97
- USER user
98
-
99
- CMD ["/app/start.sh"]
 
1
+ # ุงู„ู…ุฑุญู„ุฉ ุงู„ุฃูˆู„ู‰: ุจู†ุงุก ูˆุงุฌู‡ุฉ React
2
  FROM node:18-slim AS frontend-build
 
3
  WORKDIR /app/frontend
 
 
4
  COPY frontend/package*.json ./
5
  RUN npm ci
 
 
6
  COPY frontend/ ./
 
7
  ENV VITE_API_BASE_URL=/api
8
  RUN npm run build
9
 
10
+ # ุงู„ู…ุฑุญู„ุฉ ุงู„ุซุงู†ูŠุฉ: ุชุดุบูŠู„ ุงู„ุชุทุจูŠู‚ (ุงู„ุจูŠุฆุฉ ุงู„ู†ู‡ุงุฆูŠุฉ)
11
  FROM python:3.10-slim
12
 
13
+ # ุชุซุจูŠุช ู…ุชุทู„ุจุงุช ุงู„ู†ุธุงู… ู„ู€ OpenCV ูˆ Nginx
14
  RUN apt-get update && apt-get install -y --no-install-recommends \
15
+ libgl1 libglib2.0-0 nginx \
 
 
 
 
 
16
  && rm -rf /var/lib/apt/lists/*
17
 
18
+ WORKDIR /code
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ # 1. ุชุซุจูŠุช ู…ูƒุชุจุงุช ุงู„ุจุงูŠุซูˆู† (ู…ุซู„ ุทุฑูŠู‚ุชูƒ ุงู„ุณุงุจู‚ุฉ)
21
+ COPY backend/requirements.txt /code/requirements.txt
22
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
 
 
23
 
24
+ # 2. ู†ุณุฎ ู…ู„ูุงุช ุงู„ู…ุดุฑูˆุน
25
+ COPY backend/ /code/backend/
26
+ COPY --from=frontend-build /app/frontend/dist /code/frontend/dist
27
 
28
+ # 3. ุฅุนุฏุงุฏ Nginx ู„ูŠุนู…ู„ ูƒู€ "ุฌุณุฑ" (Bridge)
29
+ # ู„ูŠุฎุฏู… ุงู„ูˆุงุฌู‡ุฉ (Port 7860) ูˆูŠู…ุฑุฑ ุงู„ุทู„ุจุงุช ู„ู„ู€ API (Port 8000)
30
+ RUN echo 'server { \
31
+ listen 7860; \
32
+ location /api/ { proxy_pass http://127.0.0.1:8000/api/; } \
33
+ location / { root /code/frontend/dist; try_files $uri $uri/ /index.html; } \
34
+ }' > /etc/nginx/sites-enabled/default
 
35
 
36
+ # 4. ู…ู„ู ุงู„ุชุดุบูŠู„ (Startup)
37
+ RUN echo '#!/bin/bash\n\
38
+ nginx & \n\
39
+ cd /code/backend && uvicorn api:app --host 127.0.0.1 --port 8000\n\
40
+ ' > /code/start.sh && chmod +x /code/start.sh
41
 
42
+ # ุงู„ุจูˆุฑุช ุงู„ู…ุทู„ูˆุจ ู„ู€ Hugging Face
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  EXPOSE 7860
44
 
45
+ CMD ["/code/start.sh"]