File size: 3,822 Bytes
eda02a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
61
62
63
64
65
66
# nginx.conf

worker_processes auto;
events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen 8000; # 컨테이너 내부에서 8000번 포트로 수신

        # Vue.js 정적 파일 서빙
        location / {
            root   /usr/share/nginx/html; # Vue.js 빌드 결과물이 복사될 경로
            index  index.html index.htm;
            try_files $uri $uri/ /index.html; # Vue Router history mode 지원
        }

        # FastAPI 백엔드 API로 프록시 (FastAPI는 컨테이너 내부에서 8000번 포트로 실행됩니다)
        # Nginx가 FastAPI 뒤에 있으므로, FastAPI가 8000번 포트로 들어오는 요청을 받습니다.
        # Vue.js에서 /api/v1/process_youtube_video 로 요청하면, 백엔드로 전달됩니다.
        # 주의: 여기서는 간단하게 /api 경로로 들어오는 모든 요청을 백엔드로 프록시합니다.
        # 실제 앱에서는 FastAPI가 동일한 8000번 포트에서 Nginx 없이 직접 실행되거나,
        # Nginx가 다른 포트로 들어오는 요청을 백엔드 포트(예: 8001)로 프록시하는 형태가 될 수 있습니다.
        # 여기서는 Nginx가 Vue 정적 파일을 서빙하고, 백엔드는 Nginx를 통하지 않고
        # 직접 8000번 포트에서 실행될 것이므로, 이 proxy_pass 부분은 현재 필요 없습니다.
        # (Uvicorn이 직접 8000번 포트를 사용하고 Nginx는 다른 포트를 사용하는 경우의 예시)
        # location /api/ {
        #     proxy_pass http://localhost:8000; # FastAPI가 8000번 포트에서 실행 중이라고 가정
        #     proxy_set_header Host $host;
        #     proxy_set_header X-Real-IP $remote_addr;
        #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #     proxy_set_header X-Forwarded-Proto $scheme;
        # }

        # 하지만, 허깅페이스 스페이스 Dockerfile 구성은 보통 Uvicorn이 직접 8000번 포트를 리슨합니다.
        # Vue 앱은 빌드되어 /usr/share/nginx/html 에 있고, Nginx는 그 정적 파일만 서빙합니다.
        # API 호출은 Vue 앱에서 직접 Uvicorn으로 이루어집니다 (동일 포트).
        # 따라서 위 proxy_pass 설정은 이 경우 필요 없습니다.
        # Dockerfile에서 Nginx를 사용하지 않고 Uvicorn이 Vue 앱의 정적 파일까지 서빙하는 경우가 더 흔합니다.

        # --- 수정: 허깅페이스 스페이스 Docker 환경에 맞게 Nginx 역할 최소화 ---
        # 허깅페이스 스페이스는 Docker 컨테이너의 8000번 포트를 외부로 노출합니다.
        # 일반적으로 Uvicorn(FastAPI)이 이 8000번 포트를 직접 리슨하고,
        # Vue.js 빌드 결과물은 Uvicorn의 Starlette StaticFiles 기능을 통해 서빙하거나,
        # Nginx를 별도로 띄워 정적 파일만 서빙하고 API는 직접 Uvicorn으로 보내는 방식입니다.
        # 여기서는 Uvicorn이 8000번 포트를 리슨하고, Nginx는 별도의 포트에서 정적 파일만 서빙하는
        # 복잡한 구성을 피하고, Uvicorn이 모든 것을 처리하도록 구성하는 것이 더 간단합니다.

        # 잠시 보류하고, 다음 start.sh 스크립트와 함께 설명하겠습니다.
        # Nginx를 사용하지 않는 것이 더 일반적입니다.

        # 임시로 이 부분은 주석 처리합니다.
        # location /api/ {
        #     proxy_pass http://127.0.0.1:8000;
        #     proxy_set_header Host $host;
        #     proxy_set_header X-Real-IP $remote_addr;
        #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # }
    }
}