作成中のコードを適切にデバッグするためのローカル設定を取得するには、開発者が認めるよりも時間がかかります。そして、これはほとんどの場合 1 回で完了する設定なので、書き留めておかないと覚えられないことを忘れないでください。この投稿はまさにその問題を解決するためにここにあります。 これを、ローカル開発環境を立ち上げて実行する方法を書面で思い出させるものとして活用してください。
この投稿では、デバッグ モードに必要な更新以外の、Django、Docker、または Docker Composer のセットアップの詳細については説明しません。この部分を機能させる方法についての実践的な知識をすでに持っていることを前提としています。
開発モードで実行するように 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"]
このコードについて留意すべき点
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}
コードの内訳に入ってみましょう
そして保存をクリックしてください!
デバッガーサーバーを起動します:
[デバッグ] ボタン (緑色のバグ アイコン) をクリックして、PyCharm デバッガーを開始します。これにより、設定したポートでのリッスンが開始されます。
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 は以前に公開したものと一致します。
docker-compose up --build
これにより、Docker イメージが構築され、開発モードで実行される Django を含むサービスが開始されます。
2.ブレークポイントを設定します:
PyCharm 内の Django コードにブレークポイントを設定します。コンテナはポート 5679 で実行されている PyCharm デバッグ サーバーに接続するため、ブレークポイントは機能するはずです。
3.コードをトリガー:
次に、Django REST フレームワーク API で HTTP リクエストをトリガーします。コードがブレークポイントに到達すると、PyCharm は実行を一時停止し、現在の状態を検査してコードをステップ実行できるようにします。
Docker の実行中にエラー「bind: address selected in use」が発生した場合は、別のプロセスがすでにポート 5679 を使用しています。この場合、次のことが可能です。
これは、PyCharm の強力なデバッガーを使用して、Docker コンテナー内で開発モードで Django REST フレームワーク アプリケーションを実行するために使用するセットアップです。この設定は、コードを 1 行ずつローカルで実行することで、バックエンド コードをデバッグするのに役立ちます。
PyCharm と通信するように Docker コンテナを設定すると、Django アプリケーションの作成、テスト、デバッグが簡素化され、コードの作成が容易になります。
コードを解読して楽しんでください!
以上がデバッグ モード: Django Docker Pycharmの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。