質問: ### 質問 Docker上でDjangoの内蔵サーバを立てた時に、ホスト側からアクセスしたいんですが、そのDjango等の設定を施したイメージをrunする時のポート設定はどうすればいいですか? アクセスしたいURLはhttp://127.0.0.1:8000/です。 ### 追加項目 実行した時点では公式のCentOSイメージをrunさせて、そのCentOS上でyumコマンドでPython3.6/Djangoをインストールしました。 DocekrFileやDockerComposeに関しては、まだそこまで学習が進んでいないので何も手を付けていない状態です。 この質問に至った経緯は、Docker上で上記の通りCentOSを立ち上げ、Python/Djangoをインストールし、Djangoの学習を進めていた際に、Djangoの内蔵サーバをDocker/CentOS上で実行したが、ホスト側コンピュータ(MacOS)でそこにアクセスできなかったため、調べたところDocker runコマンド時にポート設定のオプションをつける必要があることにたどり着きました。内蔵サーバへはhttp://127.0.0.1:8000でアクセスできる(予定)なので、8000のポートをどうにかするのかと思い調べていましたが、ホスト側とDocker側のポートの設定が必要であると知り、どちらをどのように設定すればホストからDocker内CentOSのDjangoサーバにアクセス出来るのだろうか、と考えたからです。 DockerとDjangoの2つに関する技術知識が必要になり、今までこの分野の学習をしたことがなかったため、Docker上でOSを動かして、コマンドラインでDjangoを操作してWebアプリを作れば、一度にどちらも学習できるのでは?と思い立ったためDockerでCentOSをたちあげ、そこでDjangoを扱っています。
回答: Djangoに触れたことがないのでアプリ側の話になると踏み込んだ回答ができないのですが、 現在の事象的におそらく以下2点に留意すればあとはご自身で解決できるかと思います。 ##### 1 containerのポートをhostのポートにバインドしてrunする@host ``` // 補足) 80:8000=host側:container側 docker run -it -p 80:8000 ... ``` ##### 2 全てのIPからのリクエストをバインドしたポートで受け付ける@container ``` // 補足) 0=全IP、 8000=host側にバインドしたポート python manage.py runserver 0:8000 ``` そうすると上記の設定では http://127.0.0.1/でアクセスできるはずです。 http://127.0.0.1:8000/でアクセスしたいのであればもうわかりますよね? もしアクセス後にDjango(アプリケーション)側で何か問題がありましたら別途質問を立てられると良いと思います。 冒頭に申し上げた通り、Djangoに触れたことがないので。。。