検索

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 までご連絡ください。
Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、