「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > デバッグ モード: Django Docker Pycharm

デバッグ モード: Django Docker Pycharm

2024 年 11 月 6 日に公開
ブラウズ:473

Debug Mode: Django Docker Pycharm

作成中のコードを適切にデバッグするためのローカル設定を取得するには、開発者が認めたいよりも時間がかかります。そして、これはほとんどの場合 1 回で完了する設定なので、書き留めておかないと覚えられないことを忘れないでください。この投稿はまさにその問題を解決するためにここにあります。 これを、ローカル開発環境を立ち上げて実行する方法を書面で思い出させるものとして活用してください。

前提条件:

  • PyCharm Professional (Docker サポート用)
  • Docker と Docker Compose
  • Django REST フレームワーク (DRF) アプリケーション

この投稿では、デバッグ モードに必要な更新以外の Django、Docker、または Docker Composer のセットアップについては詳しく説明しません。この部分を機能させる方法について、すでに実践的な知識があることを前提としています。

ステップ 1: デバッグ用の Dockerfile セットアップ

開発モードで実行するように Dockerfile を設定し、PyCharm デバッガーからの接続を許可します。

以下は Dockerfile の例です:

# Builder stage
FROM python:3.9-slim as builder

RUN chmod 1777 /tmp

# Install system dependencies
RUN apt-get update && apt-get install -y \
    libpq-dev \
    build-essential

WORKDIR /app

# Copy the requirements file into the container
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt > pip_install.log

# Copy the current directory contents into the container
COPY . /app

# Collect static files
RUN python manage.py collectstatic --noinput

# Final stage
FROM python:3.9-slim

# Set environment variables
ENV PYTHONUNBUFFERED=1
ENV DJANGO_SETTINGS_MODULE=template.settings.development

# Set work directory
WORKDIR /app

# Copy files from the builder stage
COPY --from=builder /app /app

# Install pydevd-pycharm for remote debugging and gunicorn for serving
RUN pip install gunicorn pydevd-pycharm==241.17890.14 psycopg2-binary

# Expose necessary ports
EXPOSE 8000 5679  # Web app port and debug port

# Entry point for the container
ENTRYPOINT ["sh", "-c", "python manage.py runserver 0.0.0.0:8000"]

このコードに関する注意事項

  • pydevd-pycharm==241.17890.14 の 241.17890.14 は、お持ちの Pycharm のバージョンによって異なります
  • 8000 (Web サーバー ポート) と 5679 (デバッガー ポート) の両方を外部アクセス用に公開しています。

ステップ 2: Docker Compose の構成

docker-compose.yml ファイルを取得して、データベースや他のサービスとともに Web サービス (Django アプリ) を構成しましょう。

これが docker-compose.yml のサンプルです:

version: '3'

services:
  web:
    environment:
      - DJANGO_ENVIRONMENT=development
      - DB_HOST=host.docker.internal
    build:
      context: .
    command: >
      sh -c "python manage.py migrate &&
             python manage.py collectstatic --noinput &&
             python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/app
    ports:
      - "8000:8000"   # Expose web port
      - "5679:5679"   # Expose debugger port
    extra_hosts:
      - "host.docker.internal:host-gateway"
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}

コードの内訳を見てみましょう

  • Web サーバー用にポート 8000 をマッピングし、PyCharm デバッガ用にポート 5679 をマッピングしています。
  • extra_hosts は、Docker コンテナが host.docker.internal.
  • を使用してホスト マシンと通信できることを保証します。

ステップ 3: デバッグ用に PyCharm を構成する

  1. Python デバッグサーバー構成の作成:
  2. PyCharm で、[実行] ➡️ [構成の編集] に移動します。
  3. ボタンをクリックして、Python デバッグ サーバーを選択します。
  4. ホストを 0.0.0.0 またはローカル マシンの IP アドレスに設定します。
  5. ポートを 5679 (または Docker セットアップで公開したポート) に設定します。
  6. 保存をクリックしてください!

  7. デバッガーサーバーを起動します:
    [デバッグ] ボタン (緑色のバグ アイコン) をクリックして、PyCharm デバッガーを開始します。これにより、設定したポートでのリッスンが開始されます。

ステップ 4: リモート デバッグ コードを Django に追加する

Django プロジェクトで、PyCharm デバッガーに接続するには、manage.py または wsgi.py に次のコードを追加する必要があります。

import pydevd_pycharm

# Connect to the PyCharm debug server
pydevd_pycharm.settrace('host.docker.internal', port=5679, stdoutToServer=True, stderrToServer=True, suspend=False)

このスニペットは、Django アプリに、ホスト マシン上で実行されている PyCharm デバッガーに接続し直すように指示します。 host.docker.internal は Docker のホスト マシンに解決され、port=5679 は以前に公開したものと一致します。

ステップ 5: Docker を実行してデバッグする

  1. Docker をビルドして実行: 次のコマンドを実行してコンテナを起動します。
docker-compose up --build

これにより、Docker イメージが構築され、開発モードで実行される Django を含むサービスが開始されます。

2.ブレークポイントの設定:
PyCharm 内の Django コードにブレークポイントを設定します。コンテナはポート 5679 で実行されている PyCharm デバッグ サーバーに接続するため、ブレークポイントは機能するはずです。

3.コードをトリガー:
ここで、Django REST フレームワーク API で HTTP リクエストをトリガーします。コードがブレークポイントに到達すると、PyCharm は実行を一時停止し、現在の状態を検査してコードをステップ実行できるようにします。

ステップ 6: トラブルシューティング

Docker の実行中にエラー「bind: address selected in use」が発生した場合は、別のプロセスがすでにポート 5679 を使用しています。この場合、次のことが可能です。

  • PyCharm デバッガーを停止し、Docker を再起動します。
  • 競合を避けるために、docker-compose.yml と PyCharm 構成のポートを変更します。

結論

これは、PyCharm の強力なデバッガーを使用して、Docker コンテナー内で開発モードで Django REST フレームワーク アプリケーションを実行するために使用するセットアップです。この設定は、コードを 1 行ずつローカルでステップ実行することで、バックエンド コードをデバッグするのに役立ちます。

PyCharm と通信するように Docker コンテナを設定すると、Django アプリケーションの作成、テスト、デバッグが簡素化され、コードの作成が容易になります。

暗号を解読して楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/techbychoiceorg/debug-mode-django-docker-pycharm-i8d?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3