File size: 1,484 Bytes
55242a6
 
 
 
 
 
 
88ed709
 
 
 
d15d543
 
 
 
 
55242a6
 
 
 
 
 
 
 
 
d15d543
55242a6
 
88ed709
d15d543
 
 
 
 
88ed709
c105ba2
 
 
88ed709
 
 
55242a6
 
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
37
38
39
40
41
42
43
44
# 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"]