ホームページ バックエンド開発 Python チュートリアル デバッグ モード: Django Docker Pycharm

デバッグ モード: Django Docker Pycharm

Sep 07, 2024 pm 02:02 PM

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 プロジェクトでは、manage.py または wsgi.py に次のコードを追加して、PyCharm デバッガーに接続する必要があります。

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 アプリケーションの作成、テスト、デバッグが簡素化され、コードの作成が容易になります。

コードを解読して楽しんでください!

以上がデバッグ モード: Django Docker Pycharmの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

Pythonオブジェクトのシリアル化と脱介入:パート1 Pythonオブジェクトのシリアル化と脱介入:パート1 Mar 08, 2025 am 09:39 AM

Pythonオブジェクトのシリアル化と脱介入:パート1

Pythonで独自のデータ構造を実装する方法 Pythonで独自のデータ構造を実装する方法 Mar 03, 2025 am 09:28 AM

Pythonで独自のデータ構造を実装する方法

See all articles