Spaces:
Sleeping
Sleeping
성현 김
commited on
Commit
·
7c7ce47
1
Parent(s):
f88cd57
Rename entry point to app.py and update Dockerfile CMD
Browse files- Dockerfile +50 -0
- app/{main.py → app.py} +0 -0
Dockerfile
CHANGED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# 1. 기본 이미지 설정 (Python 버전 명시)
|
2 |
+
FROM python:3.10-slim
|
3 |
+
|
4 |
+
# 2. 작업 디렉토리 설정
|
5 |
+
WORKDIR /app
|
6 |
+
|
7 |
+
# 3. 시스템 의존성 설치
|
8 |
+
# Konlpy (Okt) 사용을 위해 OpenJDK 설치
|
9 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
10 |
+
openjdk-11-jre-headless \
|
11 |
+
&& apt-get clean \
|
12 |
+
&& rm -rf /var/lib/apt/lists/*
|
13 |
+
|
14 |
+
# Mecab 설치 예시 (현재 스크립트에서는 Okt를 사용하므로 주석 처리 유지 또는 삭제 가능)
|
15 |
+
# RUN apt-get update && apt-get install -y --no-install-recommends \
|
16 |
+
# curl \
|
17 |
+
# git \
|
18 |
+
# build-essential \
|
19 |
+
# mecab \
|
20 |
+
# mecab-ipadic-utf8 \
|
21 |
+
# libmecab-dev \
|
22 |
+
# && rm -rf /var/lib/apt/lists/*
|
23 |
+
# RUN bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
|
24 |
+
|
25 |
+
|
26 |
+
# 4. Python 의존성 설치
|
27 |
+
# requirements.txt 파일을 먼저 복사하여 Docker 레이어 캐싱 활용
|
28 |
+
COPY requirements.txt .
|
29 |
+
RUN pip install --no-cache-dir --upgrade pip && \
|
30 |
+
pip install --no-cache-dir -r requirements.txt
|
31 |
+
|
32 |
+
# 5. 애플리케이션 코드 및 데이터 복사
|
33 |
+
# app 폴더 전체를 /app/app 으로 복사 (WORKDIR이 /app이므로 app/으로 복사됨)
|
34 |
+
COPY ./app /app/app
|
35 |
+
# Chroma DB 데이터를 /app/chroma_db_data 로 복사
|
36 |
+
COPY ./chroma_db_data /app/chroma_db_data
|
37 |
+
# 만약 fine_tuned_model 폴더를 사용한다면 다음 줄의 주석 해제
|
38 |
+
# COPY ./fine_tuned_model /app/fine_tuned_model
|
39 |
+
|
40 |
+
# 6. 환경 변수 설정 (필요한 경우)
|
41 |
+
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
42 |
+
# 예: ENV PYTHONUNBUFFERED=1
|
43 |
+
# 예: ENV PROJECT_ROOT=/app (main.py에서 기본값으로 /app 사용 중)
|
44 |
+
|
45 |
+
# 7. 실행할 포트 설정 (Hugging Face Spaces 기본값 중 하나인 7860 권장)
|
46 |
+
EXPOSE 7860
|
47 |
+
|
48 |
+
# 8. 애플리케이션 실행 명령어
|
49 |
+
# Uvicorn이 /app/app/main.py 파일의 app 객체를 실행하도록 함
|
50 |
+
CMD ["uvicorn", "app.app:app", "--host", "0.0.0.0", "--port", "7860"]
|
app/{main.py → app.py}
RENAMED
File without changes
|