TangSan003 commited on
Commit
19dec27
·
1 Parent(s): 59062b1

Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +41 -0
Dockerfile ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Chọn base image. Python 3.9 hoặc 3.10 thường là lựa chọn tốt.
2
+ # Dùng slim để giảm kích thước image.
3
+ FROM python:3.9-slim
4
+
5
+ # Thiết lập thư mục làm việc trong container
6
+ WORKDIR /app
7
+
8
+ # Copy requirements.txt và cài đặt dependencies
9
+ COPY requirements.txt .
10
+ RUN pip install --no-cache-dir -r requirements.txt
11
+
12
+ # Copy toàn bộ mã nguồn ứng dụng của bạn vào container
13
+ COPY . .
14
+
15
+ # Đặt biến môi trường PORT mà Gradio/Streamlit/Flask/FastAPI cần
16
+ # Mặc định Hugging Face Spaces expose cổng 7860 cho Gradio/Streamlit
17
+ # Nhưng đối với API Docker, bạn có thể cần expose cổng riêng của Flask
18
+ # Hugging Face Spaces sẽ tự động expose cổng 7860 nếu có server chạy trên đó.
19
+ # Tuy nhiên, nếu bạn muốn một API thuần túy, có thể dùng cổng khác.
20
+ # Với Flask/Gunicorn, bạn thường bind đến 0.0.0.0:$PORT và Spaces sẽ handle.
21
+ # Mặc định của Spaces là 7860 nếu bạn dùng Gradio/Streamlit, nhưng với Docker API,
22
+ # cổng có thể là 80, 8000, 5000, tùy cách bạn cấu hình Gunicorn/Uvicorn.
23
+ # Tốt nhất là sử dụng PORT được cung cấp bởi môi trường.
24
+
25
+ # Expose cổng mà ứng dụng của bạn sẽ lắng nghe (cổng mà gunicorn/uvicorn bind vào)
26
+ # Nếu bạn dùng gunicorn và bind đến 0.0.0.0:$PORT, thì không cần EXPOSE cụ thể
27
+ # vì Spaces sẽ tự động ánh xạ. Nhưng tốt nhất là biết ứng dụng của bạn bind cổng nào.
28
+ # Trong trường hợp của bạn, Flask chạy trên 5000 cục bộ, nhưng trên Spaces nó sẽ là $PORT.
29
+ # Vì thế, lệnh START sẽ sử dụng $PORT.
30
+
31
+ # Lệnh chạy ứng dụng khi container khởi động
32
+ # Đảm bảo bạn đã thêm gunicorn vào requirements.txt
33
+ CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:7860"]
34
+ # Hoặc nếu bạn muốn cổng linh hoạt theo biến môi trường PORT (khuyến nghị):
35
+ # CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:$(PORT)"]
36
+ # Lưu ý: $PORT trên Hugging Face Spaces thường là 7860 cho các demo.
37
+ # Hãy thử 7860 trước, nếu không được thì mới xem xét biến PORT.
38
+ # Với Docker, họ sẽ tự động map cổng, bạn chỉ cần lắng nghe một cổng bên trong container.
39
+ # 7860 là cổng mặc định cho Gradio/Streamlit, nên dùng nó nếu bạn muốn demo trực tiếp.
40
+ # Nếu chỉ là API thuần túy, cổng 8000 hoặc 5000 cũng được.
41
+ # Để đơn giản, cứ dùng 7860 cho lần đầu, vì nó là cổng mặc định của Spaces.