2017-05-19 5 views
1

私のチームはDocker Composeを使ってDjango Webアプリケーションを提供しています。私たちは、Gunicorn Webサーバー経由でDjangoを提供する1つのコンテナと、Nginxを使用して最初のコンテナへの逆httpプロキシである別のコンテナ(静的ファイルも提供します)を持っています。Docker restart policy = alwaysの後にNginxが動作しない=常に

ドッカーの「常時」再起動ポリシーを実装しようとしています。

リブート直後(またはドッカーエンジンを停止して元に戻した後)、ブラウザのWebページにアクセスすると、「ERR_EMPTY_RESPONSE localhostはデータを送信しませんでした」というエラーが表示されます。クイックの "docker-compose ps"は、両方のコンテナが期待どおりに動作していなくても動作していることを示しています。しかし、私たちが "ドッカーの再起動"を行うと、すべてが期待通りに機能します。

私は問題をローカライズしようとしている私の設定を調べています、そして、私が知っているのは、それがドッカーによって自動的に再起動された後のNginxコンテナの問題です。ホストマシンのポートをGunicornコンテナにマップしました.Gunicornコンテナにアクセスでき、そのコンテナは自動再起動後に正常に動作します。だから、排除のプロセスによって、それはNginxのコンテナの問題でなければならない。

Hereは、私たちのdocker-compose.ymlファイルです。

Hereは、Gunicorn Dockerfileです。

Hereは、Nginxの設定ファイルです。

誰でもこの問題の原因が何であるかについての洞察はありますか?それとももっと良い解決策ですか?アイデアを探しています。ありがとう!

+0

Dockerのバージョンは何ですか? –

答えて

0

サービスの前にNginxプロキシがあり、再起動後に他のすべてのサービスが正常に再起動されますが、nginx-proxyは再起動しません。私はdocker-composeファイルを使用しています。私はsystemdサービスファイルを作成しているこの問題は

Description=NGinx Proxy App 
After=docker.service 
Requires=docker.service 

[Service] 
TimeoutStartSec=0 
Restart=always 
ExecStartPre=-/usr/local/bin/docker-compose -f /path/to/docker-compose.yml down 
ExecStart=/usr/local/bin/docker-compose -f /path/to/docker-compose.yml up -d 

[Install] 
WantedBy=multi-user.target 

以下のように/etc/systemd/systemnginx-proxy-container.serviceと呼ば解決するために、私はデーモン設定を再読み込みして、あなたが純粋なドッカーを探している場合

sudo systemctl daemon-reload 
sudo systemctl start nginx-proxy-container.service 
# this start container when OS restarts 
sudo systemctl enable nginx-proxy-container.service 

以下のようにそれを開始します解決策は、これが

1
を助け docker-systemdプロジェクトに

希望を見てくださいgithubに関する問題は、あなたの問題を正確に記述しています:https://github.com/docker/compose/issues/872

このリンクは、dockerエンジン1.4に問題があったと報告しています。これは 以降のバージョンで修正されています。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 16787857) – OmG

+0

@OmG抽象を書き直して強調表示しました。今はっきりしていることを願っています。 – Mathias

関連する問題