Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動


press
Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動

Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動

Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動して、ブレークポイントを設定して任意の行でプログラムの実行を一時停止します。venvなどの環境でDjangoプロジェクトを作成した場合はデバッグモードで起動するだけでプレークポイントが効きますが、Docker環境の場合は設定が必要です。

コードはGitHubリポジトリにあげています。

開発環境

$ tree
.
├── Dockerfile
├── README.md
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── nginx.conf
└── simple-django-project
    ├── Pipfile
    ├── Pipfile.lock
    ├── README.md
    └── config
        ├── app
        ├── config
        ├── manage.py
        └── static

リポジトリをクローン

$ git clone https://github.com/nobnov/simple-django-project.git

Dockerfileを編集

    ADD PROJECTNAME/Pipfile /code/
    ADD PROJECTNAME/Pipfile.lock /code/
    ↓
    ADD simple-django-project/Pipfile /code/
    ADD simple-django-project/Pipfile.lock /code/

docker-compose.ymlを編集

    web:
    ...
    command: gunicorn WSGIPATH.wsgi:application --bind 0.0.0.0:8000
    volumes:
        - ./PROJECTNAME:/code
    ↓
    command: gunicorn config.wsgi:application --bind 0.0.0.0:8000
    volumes:
        - ./simple-django-project/config/:/code


    nginx:pw
    ...
    volumes:
            - ./PROJECTNAME/static:/static
    ↓
    volumes:
            - ./simple-django-project/config/static:/static

Dockerをビルド

$ docker-compose build

Dockerを起動

$ docker-compose up -d

無事にDockerが起動できていれば画像のように全て緑色になります。

Dockerの確認
Dockerの確認

ブラウザ確認

localhost/appにアクセスして起動できるか確認します

ブラウザ確認
ブラウザ確認

デバッグモードの設定

1. インタプリタの設定

環境設定でインタプリタを指定

インタプリタの設定
インタプリタの設定

2. フレームワークの設定

manage.pyがあるプロジェクトルートとsettings.pyを指定します。

フレームワークの設定
フレームワークの設定

3. コンフィギュレーションの追加

ホストを0.0.0.0にすることが重要です。Python Interpreterは先ほど指定した環境になっていることを確認します。

コンフィギュレーションの追加
コンフィギュレーションの追加

デバッグモードで起動

ブレークポイントを設定

行の右横をクリックすると赤丸が表示されます。

ブレークポイントを設定
ブレークポイントを設定

先ほど確認したブラウザでリロードすると、画像のようにブレークポイントを設定した箇所でプログラムの実行が一時停止します。

デバッグモード
デバッグモード

進むをボタンを押すとプレークポイントを抜けて、ブラウザに戻り表示されているのが確認できます。

ブラウザ確認
ブラウザ確認

人気のタグ

Beautiful Soup calender Channels charset ChromeDriver datetime Docker gettext GitHub glob Google Colaboratory Gunicorn i18n Matplotlib Nginx OpenCV pandas Pillow Pipenv PostgreSQL psycopg2 PyCharm PyCon pyenv random Redis ReportLab requests Selenium timedelta Ubuntu uWSGI venv


株式会社ファントムへのお問い合わせ

当ブログは群馬県でPythonを使ったAIやシステムを開発している株式会社ファントムが運営しています。




    Show Comments (0)

    Comments

    Related Articles

    Django

    WARNING: `pyenv init -` no longer sets PATH.

    WARNING: `pyenv init -` no longer sets PATH. pyenvが入っているzsh環境(Mac)でターミナルの起動時に以下のエラーが出るようになりました。今回はDjangoのプロジェク […]

    Posted on by press
    Django

    DjangoとChannelsで簡単なチャットサーバーを構築(3)

    前回からの続きです。 チャンネルレイヤーを有効化 チャンネルレイヤーを使用するためにバックエンドにRedisを使用します。Redisを使用するためにDockerを起動します。 以下のコマンドを実行してRedisを起動しま […]

    Posted on by press