2016-11-13 8 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.exeからstartを省略すると、バックグラウンドで永久に実行されないようになり、コンテナが終了します。 CMD ["forever", "server.js"]それが助けかどうかを確認 -

はこれにdockerfileであなたの最後の行を変更してみてください。

+0

助けてくれてありがとう! – Erik

1

正しく実行するには、nginxとnode.jsを別々のコンテナで実行します。 Dockerは、アプリケーションを相互に分離するプラットフォームであり、アプリケーションをフォアグラウンドで実行し、このアプリケーションのみを制御します。一つの容器内

スタートより1つの応用が可能であるが、これは悪い考えです。

+0

お返事ありがとうございます。 Coudはnginxとnidejを別のコンテナで実行している例をいくつか証明してください。 – Erik

関連する問題