File size: 1,745 Bytes
f606230
 
 
 
 
 
 
c4ea8b1
f606230
589b6e8
 
 
d8d8610
f708a1a
589b6e8
f606230
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Sử dụng ảnh base Python 3.9, phù hợp với project của chúng ta
FROM python:3.9

# Thiết lập thư mục làm việc bên trong container
WORKDIR /code

# Cài đặt libgomp1, một phụ thuộc có thể cần cho PyTorch (giữ lại từ ví dụ của bạn, rất tốt)
RUN apt-get update && apt-get install -y libgomp1 default-jdk && rm -rf /var/lib/apt/lists/*

# Thiết lập biến môi trường để chỉ định thư mục cache
# Chúng ta sẽ tạo một thư mục .cache bên trong thư mục làm việc /code
ENV HF_HOME=/code/.cache

RUN mkdir -p /code/.cache && chmod 777 /code/.cache

# Sao chép file requirements.txt vào trước để tận dụng cache của Docker
COPY ./requirements.txt /code/requirements.txt

# Cài đặt các thư viện từ requirements.txt
# KHÁC BIỆT QUAN TRỌNG: Chúng ta bỏ cờ --no-deps.
# Lý do: Các thư viện như transformers, torch có rất nhiều phụ thuộc con.
# Bỏ cờ này đi để pip tự động cài đặt tất cả những gì cần thiết, đảm bảo môi trường đầy đủ.
RUN pip install --no-cache-dir -r /code/requirements.txt

# Sao chép toàn bộ code và model của ứng dụng vào container
# Dấu "." đầu tiên là thư mục hiện tại (dự án của bạn)
# Dấu "." thứ hai là thư mục làm việc trong container (/code)
COPY . .

# Expose cổng mà uvicorn sẽ chạy, theo chuẩn của Hugging Face
EXPOSE 7860

# Lệnh để khởi động ứng dụng FastAPI khi container chạy
# KHÁC BIỆT QUAN TRỌNG: File chính của chúng ta là "app/main.py",
# nên chúng ta phải gọi là "app.main:app".
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]