File size: 2,693 Bytes
7c7ce47
f080cbd
ead9132
7c7ce47
 
 
 
 
 
8d1d1ef
7c7ce47
 
 
32d4d25
 
89985ec
f080cbd
 
 
 
89985ec
4ae1004
89985ec
f080cbd
4ae1004
9508f33
 
89985ec
 
 
 
 
503f0d1
89985ec
 
7c7ce47
 
 
 
f080cbd
7c7ce47
89985ec
4a54384
89985ec
 
 
 
f2ab377
 
 
 
 
f080cbd
 
89985ec
f080cbd
7c7ce47
 
 
89985ec
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 1. 기본 이미지 설정 (Python 버전 명시)
# README.md에서 python_version: 3.9.13을 지정했으므로, 일관성을 위해 여기도 맞춥니다.
FROM python:3.9.13-slim

# 2. 작업 디렉토리 설정
WORKDIR /app

# 3. 시스템 의존성 설치
# Konlpy (Okt) 사용을 위해 OpenJDK 설치
RUN apt-get update && apt-get install -y --no-install-recommends openjdk-17-jre-headless && apt-get clean && rm -rf /var/lib/apt/lists/*

# 4. Python 의존성 설치
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip

# requirements.txt 내용 확인 및 pip install 상세 로그 출력
RUN echo "--- Contents of requirements.txt inside Docker build context: ---" && \
    cat /app/requirements.txt && \
    echo "--- End of requirements.txt contents ---" && \
    echo "--- Attempting to install packages from requirements.txt (verbose mode) ---" && \
    pip install --no-cache-dir -vvv -r requirements.txt

# uvicorn 설치 확인 및 PATH 확인
RUN echo "--- Checking uvicorn and PATH after pip install ---" && \
    (which uvicorn || echo "uvicorn not found in PATH") && \
    echo "PATH is: $PATH" && \
    echo "--- End of check ---"

# 캐시 디렉토리 생성 및 모든 사용자에게 쓰기 권한 부여 (애플리케이션 코드 복사 전)
RUN mkdir -p /app/.cache/huggingface/hub \
             /app/.cache/huggingface/transformers \
             /app/.cache/huggingface/sentence_transformers && \
    chmod -R 777 /app/.cache
# 참고: /app/cache/huggingface_embeddings 경로는 HuggingFaceEmbeddings에서 cache_folder 인자를 사용하지 않기로 했으므로 여기서는 제외했습니다.
# 만약 특정 라이브러리가 /app/cache를 직접 사용한다면 chmod -R 777 /app/.cache 만으로도 충분할 수 있습니다.

# 5. 애플리케이션 코드 및 데이터 복사
COPY ./app /app/app
COPY ./chroma_db_data /app/chroma_db_data
# COPY ./fine_tuned_model /app/fine_tuned_model # 필요시 주석 해제

# 6. 환경 변수 설정
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV HF_HOME=/app/.cache/huggingface
ENV HF_HUB_CACHE=/app/.cache/huggingface/hub
ENV TRANSFORMERS_CACHE=/app/.cache/huggingface/transformers
ENV SENTENCE_TRANSFORMERS_HOME=/app/.cache/huggingface/sentence_transformers
# 애플리케이션이 /app 디렉토리에서 모듈을 찾도록 설정
ENV PYTHONPATH=/app
# ENV PYTHONUNBUFFERED=1 # 로그 즉시 확인 등에 유용
# ENV PROJECT_ROOT=/app

# ENV PYTHONUNBUFFERED=1 # 로그 즉시 확인 등에 유용
# ENV PROJECT_ROOT=/app

# 7. 실행할 포트 설정
EXPOSE 7860

# 8. 애플리케이션 실행 명령어
CMD ["uvicorn", "app.app:app", "--host", "0.0.0.0", "--port", "7860"]