Spaces:
Sleeping
Sleeping
Commit
·
19dec27
1
Parent(s):
59062b1
Dockerfile
Browse files- 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.
|