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のコマンドはポートを指定していて
1 |
python manage.py runserever 8004 |
でした。
結論から言うと、
1 |
python manage.py runserever 0.0.0.0:8004 |
とするとDockerコンテナの外でcurlをして返ってくるようになりました。
どうやらコンテナの中でrunserverを叩くとサーバーにIPアドレスが発行されてそのアドレスに対してListenがされていなければコンテナの外からは見えず、「0.0.0.0」としてすべてのIPアドレスに対してListenできるようにしないとコンテナの外でcurlを叩いたときに正常なレスポンスが返ってこないらしいです。
終わりに
今回はDocker+Django環境のrunserverでDockerコンテナの外からcurlを叩くと「curl: (52) Empty reply from server」と出てしまう問題の対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません