Docker+Django環境のrunserverでcurl: (52) Empty reply from server

今回はDocker+Django環境のrunserverでDockerコンテナの外からcurlを叩くと「curl: (52) Empty reply from server」と出てしまう問題の対処法についてご紹介いたします。



Docker+Django環境のrunserverでcurl: (52) Empty reply from server

Docke+Django環境で開発しようとしていたときのことです。

Docker Composeを使って開発環境を整えているときに、nginxで繋いだもののうまくブラウザで表示されなかったので一旦nginxを外してDjangoのrunserverでうまくブラウザで表示されるか試していました。

しかしrunserverでサーバーを立ち上げたものの、Dockerコンテナ内でcurlをするとレスポンスが返ってくるのですが、Dockerコンテナの外でcurlをすると「curl: (52) Empty reply from server」と表示されてレスポンスが正常に返ってきませんでした。

このとき、runserverのコマンドはポートを指定していて

でした。

結論から言うと、

とするとDockerコンテナの外でcurlをして返ってくるようになりました。

どうやらコンテナの中でrunserverを叩くとサーバーにIPアドレスが発行されてそのアドレスに対してListenがされていなければコンテナの外からは見えず、「0.0.0.0」としてすべてのIPアドレスに対してListenできるようにしないとコンテナの外でcurlを叩いたときに正常なレスポンスが返ってこないらしいです。

終わりに

今回はDocker+Django環境のrunserverでDockerコンテナの外からcurlを叩くと「curl: (52) Empty reply from server」と出てしまう問題の対処法についてご紹介いたしました。

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Django

Posted by ちこ