Python
Django
IntelliJ
docker
Pycharm

dockerで動いているdjangoをIntelliJでデバッグする

dockerもdjangoも素人ですごく苦労したのでメモ。

変なこと書いていたら教えてください。

IntelliJのバージョン

IntelliJ IDEA 2018.1 (Ultimate Edition)

多分PyCharmとかでもやり方は同じだと思う。

状況

django(djangorestframework)とmysqlをそれぞれ別々のcontainerで起動。
djangoをIntelliJでデバッグしながら開発したい。

djangoは./manage.py runserver 0.0.0.0:8000で動かしている。

やりかた

Project Structure の設定

⌘+;Project StructureModulesで下記のように設定する。
image.png

Djangoが表示されていない場合は一度-で消して再度+すれば出てくると思います。

Django project root
manage.py がある場所を指定

Settings
settings.pyを指定

Manage script:
manage.pyを指定

Edit Configurationsの設定

django用の起動設定を作成します。

Run > Edit Configurations とか、右上からEdit Configurationsを開く
image.png

Django serverを選択。
image.png

Django serverがないときはmoreをクリックするとあるはず。
image.png

こんな感じに設定
image.png

Host:
0.0.0.0
=> 重要ポイントその1

Port:
django動かしてるポート (8000)

Environment variables:
勝手に入っている
DJANGO_SETTINGS_MODULE=api.settings おそらくこれが重要

Python Interpreter:
Project SDK として指定しているdockerのpythonを指定

Docker container settings:
各々の環境に合わせて設定。
ここでハマった。
横の...をクリックでGUIで指定できます。
image.png
Network mode:
=> 重要ポイントその2
mysqlが動いているネットワーク名を指定
$ docker network lsで確認できます。

そのほかの項目はdocker-compose.ymlと合わせる。

実行

1.何らかの方法でmysqlのdockerを起動

私の場合は
$ docker-compose up db

2.上記で作成した起動ファイルを実行

設定ファイル名を選択して虫マークをクリック。

image.png

3.やったぜ

image.png