# Sử dụng image Python cơ bản của Streamlit (có sẵn Streamlit) FROM python:3.9-slim-buster # Tạo một người dùng không có quyền root để tăng cường bảo mật RUN useradd -m -u 1000 user USER user # Đặt biến môi trường cho PATH để các thư viện được cài đặt có thể truy cập được ENV PATH="/home/user/.local/bin:$PATH" # Đặt thư mục làm việc trong container WORKDIR /app # Sao chép các file của ứng dụng vào container # --chown=user đảm bảo quyền sở hữu cho người dùng 'user' COPY --chown=user . /app # Cài đặt các thư viện từ requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Đặt biến môi trường để NLTK tìm data ở thư mục cục bộ của ứng dụng ENV NLTK_DATA=/app/nltk_data # Lệnh tải NLTK stopwords (chỉ chạy một lần trong quá trình build Docker) # Điều này giúp đảm bảo stopwords có sẵn khi ứng dụng chạy RUN python -c "import nltk; nltk.download('stopwords', download_dir='/app/nltk_data')" # Expose cổng mà Streamlit app sẽ lắng nghe (Hugging Face Spaces dùng 7860 cho Docker/Streamlit) EXPOSE 7860 # Lệnh để chạy ứng dụng Streamlit # --server.port 7860 để Streamlit lắng nghe đúng cổng # --server.address 0.0.0.0 để lắng nghe tất cả các giao diện mạng CMD ["streamlit", "run", "app.py", "--server.port", "7860", "--server.address", "0.0.0.0"]