LoginSignup
0
2

More than 3 years have passed since last update.

Vagrant(Ubuntu) + Docker + Djangoで開発用サーバ起動までいく

Last updated at Posted at 2019-05-17

起こった問題

Djangoの開発環境をDockerで作ってみた

ここを参考に環境構築していたら詰まったので、補足の記事を作りました。

私の環境

  • windows10 Home
  • Vagrant + Ubuntu
  • Docker CE
  • python3
  • Django 2.2

原因と解決方法

Djangoの開発環境をDockerで作ってみた

最後の「開発用サーバ起動」までは、こちらの記事のとおりに進めることができました。
最後の最後、開発用サーバ起動の手順

docker exec test python3 manage.py runserver 0.0.0.0:8000

このあとでブラウザからlocalhost:8000にアクセスすると失敗します。

原因1:Vagrantfileのguestポートとhostポートの設定がおかしい

config.vm.network "forwarded_port", guest: 8000, host: 12345

host側(Windows)で12345のポートを使って、guest側(ubunts)の8000につなぐ、ってことだと思います。なので、ブラウザからアクセスするときの ポート指定は12345 にする必要があります。

原因2:コンテナ起動時に指定するポートと、WEBサーバ起動時に指定するポートが一致してない

元記事ではこのようにしてコンテナを起動しています。

$ docker run -itd -p 127.0.0.1:8000:8000 -v /path/to/src:/code --name test django

このときの-p 127.0.0.1:8000:8000は、ubuntu側のポート8000とコンテナ側のポート8000をつなぐよ、ってことだと思います。

さきほどの原因1のところで、Vagrantfile内でguest側(Ubunts)は8000を使うよと設定したので、コンテナ起動時の指定にもUbuntuは8000を使うよとする必要があります。

また、元記事ではこのようにして、Django付属のWEBサーバを起動しています。

$ docker exec test python3 manage.py runserver 0.0.0.0:8000

上で、コンテナ起動時にコンテナ側は8000を使うよと指定したので、コンテナ側でDjangoのWEBサーバが使うのは8000である必要があります。

図にするとたぶんこういう感じです。

ポートの説明図.png

アクセスを確認

http://localhost:12345 

image.png

以上です。ぐったり。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2