2016-11-13 2 views
3

나는 서버의 nginx의 다음과 같은 설정 내 index.html 파일을 구성 고정 표시기 이미지가 :컨테이너 내부에서 nodejs를 올바르게 실행하는 방법은 무엇입니까?

server { 
    listen 80; 
    server_name mysite; 
    root /var/www/application; 
    index index.html; 
} 

난 그냥 다음과 같이 /api/ 위치를 처리 할 수 ​​nodejs를 추가 할 필요가 없음 : 그래서

upstream api_node_js { 
    server 127.0.0.1:3000; 
} 

server { 
    listen 80; 
    server_name mysite; 
    root /var/www/application; 
    index index.html; 
} 

location /api { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 

    rewrite ^/api/?(.*) /$1 break; 

    proxy_pass http://api_node_js; 
    proxy_redirect off; 
} 

api 요청을 처리하려면 3000에 NodeJS 서버를 설치하고 실행해야합니다. 내 질문은 어떻게 올바르게 실행해야합니까? 나는 이미 내 Dockerfile에서 다음 명령을 forever를 통해 실행 추가를 시도했습니다

: 그러나 불행하게도 컨테이너의 시작 후 즉시 오류없이 지금 종료

WORKDIR /var/www/application 
CMD ["forever", "start", "server.js"] 

.

제가 잘못하고있는 것을 도와주십시오.

답변

2

@ilyapt가 맞지만 nginx와 노드를 두 개의 컨테이너로 분리해야하지만 이는 사용자 질문에 대한 대답이 아닙니다. 도커 cmd에서 start을 생략하면 백그라운드에서 영원히 실행되지 않으므로 컨테이너가 종료됩니다.

dockerfile의 마지막 행을 CMD ["forever", "server.js"]으로 변경하고 도움이되는지 확인해보십시오.

+0

도움을 주셔서 감사합니다! – Erik

1

정확히 실행하려면 nginx와 node.js를 분리 된 컨테이너에서 실행하십시오. Docker는 응용 프로그램을 서로 격리하는 플랫폼으로, 하나의 응용 프로그램을 포 그라운드에서 실행하고이 응용 프로그램 만 제어합니다.

하나의 컨테이너에서 하나 이상의 응용 프로그램을 시작할 수 있지만 이것은 좋지 않습니다.

+0

답장을 보내 주셔서 감사합니다. Coud 별도의 컨테이너에 nginx 및 nidejs를 실행하는 몇 가지 예를 증명해 주시겠습니까? – Erik

관련 문제