Sodagraph commited on
Commit
7be6cd6
·
1 Parent(s): 9b9d44e

도커 변경사항 수정

Browse files
Files changed (1) hide show
  1. Dockerfile +74 -73
Dockerfile CHANGED
@@ -1,74 +1,75 @@
1
  # --- Stage 1: Frontend Build ---
2
- FROM node:20-slim as frontend-builder
3
-
4
- WORKDIR /app/frontend
5
-
6
- # package.json 및 package-lock.json 복사
7
- COPY frontend/package*.json ./
8
-
9
- # 의존성 설치
10
- RUN npm install
11
-
12
- # 나머지 프론트엔드 코드 복사
13
- COPY frontend/ .
14
-
15
- # 프론트엔드 빌드 (Vue CLI 프로젝트의 경우 'npm run build'가 적합)
16
- RUN npm run build
17
-
18
-
19
- # --- Stage 2: Backend and Combined Serving via FastAPI (Uvicorn) ---
20
- FROM python:3.11-slim-bookworm
21
-
22
- WORKDIR /app
23
-
24
- # 시스템 패키지 업데이트 및 build-essential (Python 패키지 빌드용), curl, git 설치
25
- # Ollama 설치 스크립트가 필요 없으므로 bash는 제거 가능하지만, 다른 용도로 필요할 수 있어 유지합니다.
26
- RUN apt-get update && apt-get install -y --no-install-recommends \
27
- build-essential \
28
- curl \
29
- git \
30
- bash \
31
- && rm -rf /var/lib/apt/lists/*
32
-
33
- # Python 종속성 설치
34
- COPY backend/requirements.txt ./backend/requirements.txt
35
- RUN pip install --no-cache-dir -r backend/requirements.txt
36
-
37
- # 백엔드 소스 코드 복사
38
- COPY backend/ ./backend/
39
-
40
- # Hugging Face 캐시 디렉토리 설정 (모델이 직접 다운로드되지 않으므로 필요 없을 수 있지만, 안전을 위해 유지)
41
- ENV TRANSFORMERS_CACHE="/tmp/hf_cache"
42
- ENV HF_HOME="/tmp/hf_cache"
43
-
44
- # ✨ Ollama 설치 및 모델 다운로드 단계 제거 ✨
45
- # 이 부분은 Hugging Face Spaces 환경에서 관리됩니다.
46
- # RUN curl -fsSL https://ollama.com/install.sh | sh
47
- # RUN sh -c "ollama serve & \
48
- # ATTEMPTS=0; \
49
- # while ! curl -s http://localhost:11434 > /dev/null && ATTEMPTS < 30; do \
50
- # ATTEMPTS=$((ATTEMPTS+1)); \
51
- # echo 'Waiting for Ollama server to start... (Attempt '$ATTEMPTS'/30)'; \
52
- # sleep 2; \
53
- # done; \
54
- # if [ $ATTEMPTS -eq 30 ]; then \
55
- # echo 'Ollama server did not start in time. Exiting.'; \
56
- # exit 1; \
57
- # fi; \
58
- # echo 'Ollama server started. Pulling model...'; \
59
- # ollama pull hf.co/DevQuasar/naver-hyperclovax.HyperCLOVAX-SEED-Text-Instruct-0.5B-GGUF:F16"
60
-
61
- # 프론트엔드 빌드 결과물을 백엔드 앱이 접근할 수 있는 경로로 복사합니다.
62
- # /app/static 폴더를 만들고 그 안에 Vue.js 빌드 결과물을 넣습니다.
63
- RUN mkdir -p /app/static
64
- COPY --from=frontend-builder /app/frontend/dist /app/static
65
-
66
- # 최종 실행 명령어
67
- # 애플리케이션 포트 설정 (허깅페이스 스페이스는 7860번 포트를 사용)
68
- EXPOSE 7860
69
-
70
- # CMD를 수정하여 Uvicorn만 실행합니다.
71
- # Ollama 서버는 Hugging Face Spaces 환경에서 별도로 관리됩니다.
72
- # 백엔드 main.py의 `OLLAMA_API_BASE_URL` 환경 변수가 `http://127.0.0.1:11434`로 설정되어 있는지 확인하세요.
73
- # (Hugging Face Spaces에서 Ollama SDK를 사용하면 보통 이 주소로 접근 가능합니다.)
74
- CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "${PORT:-7860}", "--app-dir", "backend/app"]
 
 
1
  # --- Stage 1: Frontend Build ---
2
+ FROM node:20-slim as frontend-builder
3
+
4
+ WORKDIR /app/frontend
5
+
6
+ # package.json 및 package-lock.json 복사
7
+ COPY frontend/package*.json ./
8
+
9
+ # 의존성 설치
10
+ RUN npm install
11
+
12
+ # 나머지 프론트엔드 코드 복사
13
+ COPY frontend/ .
14
+
15
+ # 프론트엔드 빌드 (Vue CLI 프로젝트의 경우 'npm run build'가 적합)
16
+ RUN npm run build
17
+
18
+
19
+ # --- Stage 2: Backend and Combined Serving via FastAPI (Uvicorn) ---
20
+ FROM python:3.11-slim-bookworm
21
+
22
+ WORKDIR /app
23
+
24
+ # 시스템 패키지 업데이트 및 build-essential (Python 패키지 빌드용), curl, git 설치
25
+ # Ollama 설치 스크립트가 필요 없으므로 bash는 제거 가능하지만, 다른 용도로 필요할 수 있어 유지합니다.
26
+ RUN apt-get update && apt-get install -y --no-install-recommends \
27
+ build-essential \
28
+ curl \
29
+ git \
30
+ bash \
31
+ && rm -rf /var/lib/apt/lists/*
32
+
33
+ # Python 종속성 설치
34
+ COPY backend/requirements.txt ./backend/requirements.txt
35
+ RUN pip install --no-cache-dir -r backend/requirements.txt
36
+
37
+ # 백엔드 소스 코드 복사
38
+ COPY backend/ ./backend/
39
+
40
+ # Hugging Face 캐시 디렉토리 설정 (모델이 직접 다운로드되지 않으므로 필요 없을 수 있지만, 안전을 위해 유지)
41
+ ENV TRANSFORMERS_CACHE="/tmp/hf_cache"
42
+ ENV HF_HOME="/tmp/hf_cache"
43
+
44
+ # ✨ Ollama 설치 및 모델 다운로드 단계 제거 ✨
45
+ # 이 부분은 Hugging Face Spaces 환경에서 관리됩니다.
46
+ # RUN curl -fsSL https://ollama.com/install.sh | sh
47
+ # RUN sh -c "ollama serve & \
48
+ # ATTEMPTS=0; \
49
+ # while ! curl -s http://localhost:11434 > /dev/null && ATTEMPTS < 30; do \
50
+ # ATTEMPTS=$((ATTEMPTS+1)); \
51
+ # echo 'Waiting for Ollama server to start... (Attempt '$ATTEMPTS'/30)'; \
52
+ # sleep 2; \
53
+ # done; \
54
+ # if [ $ATTEMPTS -eq 30 ]; then \
55
+ # echo 'Ollama server did not start in time. Exiting.'; \
56
+ # exit 1; \
57
+ # fi; \
58
+ # echo 'Ollama server started. Pulling model...'; \
59
+ # ollama pull hf.co/DevQuasar/naver-hyperclovax.HyperCLOVAX-SEED-Text-Instruct-0.5B-GGUF:F16"
60
+
61
+ # 프론트엔드 빌드 결과물을 백엔드 앱이 접근할 수 있는 경로로 복사합니다.
62
+ # /app/static 폴더를 만들고 그 안에 Vue.js 빌드 결과물을 넣습니다.
63
+ RUN mkdir -p /app/static
64
+ COPY --from=frontend-builder /app/frontend/dist /app/static
65
+
66
+ # 최종 실행 명령어
67
+ # 애플리케이션 포트 설정 (허깅페이스 스페이스는 7860번 포트를 사용)
68
+ EXPOSE 7860
69
+
70
+ # CMD를 수정하여 Uvicorn만 실행합니다.
71
+ # Ollama 서버는 Hugging Face Spaces 환경에서 별도로 관리됩니다.
72
+ # 백엔드 main.py의 `OLLAMA_API_BASE_URL` 환경 변수가 `http://127.0.0.1:11434`로 설정되어 있는지 확인하세요.
73
+ # (Hugging Face Spaces에서 Ollama SDK를 사용하면 보통 이 주소로 접근 가능합니다.)
74
+ # 수정: ${PORT:-7860} 대신 7860을 직접 사용하거나, sh -c로 쉘이 환경 변수를 해석하도록 합니다.
75
+ CMD ["sh", "-c", "uvicorn main:app --host 0.0.0.0 --port ${PORT:-7860} --app-dir backend/app"]