# Sử dụng image Miniconda3 để giữ kích thước nhỏ và hỗ trợ Conda FROM continuumio/miniconda3 # Cập nhật và cài đặt các công cụ cần thiết (tùy chọn, giữ tối thiểu) RUN apt-get update && apt-get install -y --no-install-recommends \ git \ && rm -rf /var/lib/apt/lists/* # Thiết lập thư mục làm việc WORKDIR /app # Tạo user không phải root RUN useradd -m -u 1000 appuser && \ mkdir -p /app/.cache && \ chown -R appuser:appuser /app # Sao chép file environment.yml và tạo môi trường Conda COPY environment.yml . RUN conda env create -f environment.yml && \ conda clean --all --yes # Kích hoạt môi trường Conda (giả sử môi trường trong environment.yml tên là 'myenv') ENV PATH /opt/conda/envs/graduated2/bin:$PATH RUN echo "conda activate graduated2" >> ~/.bashrc # Cài đặt bổ sung CLIP từ GitHub (nếu không có trong environment.yml) RUN /bin/bash -c "source activate graduated2 && pip install git+https://github.com/openai/CLIP.git" # Sao chép mã nguồn COPY --chown=appuser:appuser . . # Thiết lập biến môi trường để thay đổi thư mục cache ENV XDG_CACHE_HOME=/app/.cache # Chuyển sang user appuser để chạy ứng dụng USER appuser # Mở port 8000 EXPOSE 8000 # Chạy ứng dụng với Uvicorn trong môi trường Conda CMD ["/bin/bash", "-c", "source activate graduated2 && uvicorn app.main:app --host 0.0.0.0 --port 8000"]