# 1. 딥러닝/데이터 분석 라이브러리 빌드를 위해 무거운 alpine 대신 slim 이미지 사용 FROM python:3.11-slim # 시스템 의존성 및 빌드 도구 설치 (일부 패키지 컴파일용, 용량 줄이기 위해 설치 후 정리) RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ && rm -rf /var/lib/apt/lists/* # 2. 작업 디렉토리 설정 WORKDIR /workspace # 3. pyproject.toml을 이용해 종속성 설치를 위해 pip 기반으로 설치하거나 # 여기서는 직관적으로 pip가 pyproject.toml의 dependencies를 인식하도록 설정 COPY pyproject.toml ./ # 4. 중요: PyTorch의 CPU 버전을 명시하여 다운로드 용량을 기하급수적으로 줄입니다. # (만약 GPU(CUDA) 환경이 필수라면 이 라인을 삭제하고 기본 설치하게 두세요) RUN pip install --no-cache-dir torch==2.10.0 --index-url https://download.pytorch.org/whl/cpu # 5. 나머지 패키지 전체 설치 (pyproject.toml의 의존성 자동 파싱 설치) # pip 최신 버전은 pyproject.toml의 [project.dependencies]를 바로 인지합니다. RUN pip install --no-cache-dir . # 6. 소스 코드 복사 (전체 소스코드를 컨테이너 안으로 복사) COPY . . # 7. 포트 개방 EXPOSE 7860 # 8. Uvicorn 실행 (진입점 주소: src.api.main:app) CMD ["uvicorn", "src.api.main:app", "--host", "0.0.0.0", "--port", "7860"]