"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > وضع التصحيح: Django Docker Pycharm

وضع التصحيح: Django Docker Pycharm

تم النشر بتاريخ 2024-11-06
تصفح:563

Debug Mode: Django Docker Pycharm

يستغرق الحصول على الإعداد المحلي الخاص بك لتصحيح التعليمات البرمجية التي تكتبها بشكل صحيح وقتًا أطول مما يود أي مطور الاعتراف به. ودعونا لا ننسى أن هذا في الغالب عبارة عن إعداد يتم تنفيذه مرة واحدة، لذا إذا لم نكتبه، فلن نتذكره. هذه المشاركة هنا لحل هذه المشكلة بالتحديد! اجعل هذا بمثابة تذكير مكتوب لكيفية تشغيل بيئة التطوير المحلية لديك.

المتطلبات الأساسية:

  • PyCharm Professional (لدعم Docker)
  • دوكر ودوكر يؤلف
  • تطبيق Django REST Framework (DRF)

لن يغطي هذا المنشور تفاصيل حول إعداد ملحن Django أو Docker أو Docker خارج التحديثات المطلوبة لوضع التصحيح. يفترض أن لديك بالفعل معرفة عملية حول كيفية تشغيل هذا الجزء.

الخطوة 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"]

أشياء يجب وضعها في الاعتبار حول هذا الرمز

  • 241.17890.14 في pydevd-pycharm==241.17890.14 سيكون مختلفًا اعتمادًا على إصدار Pycharm لديك
  • نحن نكشف عن كل من 8000 (منفذ خادم الويب) و5679 (منفذ مصحح الأخطاء) للوصول الخارجي.

الخطوة 2: تكوين Docker Compose

فلنقم بتشغيل ملف docker-compose.yml الخاص بنا لتكوين خدمة الويب (تطبيق 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}

دعونا ننتقل إلى تفاصيل التعليمات البرمجية

  • نحن نقوم بتعيين المنفذ 8000 لخادم الويب والمنفذ 5679 لمصحح أخطاء PyCharm.
  • يضمن extra_hosts أن حاوية Docker الخاصة بك يمكنها التواصل مع الجهاز المضيف باستخدام host.docker.internal.

الخطوة 3: تكوين PyCharm لتصحيح الأخطاء

  1. إنشاء تكوين خادم تصحيح أخطاء Python:
  2. في PyCharm، انتقل إلى Run ➡️ تحرير التكوينات.
  3. انقر فوق الزر وحدد Python Debug Server.
  4. اضبط المضيف على 0.0.0.0 أو عنوان IP لجهازك المحلي.
  5. اضبط المنفذ على 5679 (أو المنفذ الذي تعرضه في إعداد Docker الخاص بك).
  6. واضغط على حفظ!

  7. بدء تشغيل خادم مصحح الأخطاء:
    ابدأ تشغيل مصحح أخطاء PyCharm بالنقر فوق الزر Debug (رمز الخطأ الأخضر). سيبدأ هذا الاستماع على المنفذ الذي قمنا بتعيينه.

الخطوة 4: إضافة رمز التصحيح عن بعد إلى Django

في مشروع Django الخاص بك، ستحتاج إلى إضافة الكود التالي في manager.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، ويتطابق المنفذ = 5679 مع المنفذ الذي كشفناه سابقًا.

الخطوة 5: تشغيل Docker وDebug

  1. إنشاء وتشغيل Docker: قم بتشغيل الأمر التالي لبدء الحاويات الخاصة بك:
docker-compose up --build

سيؤدي هذا إلى إنشاء صورة Docker وبدء الخدمات، بما في ذلك تشغيل Django في وضع التطوير.

2. تعيين نقاط التوقف:
قم بتعيين نقاط التوقف في كود Django الخاص بك داخل PyCharm. يجب أن تعمل نقاط التوقف لأن حاويتك ستتصل بخادم تصحيح الأخطاء PyCharm الذي يعمل على المنفذ 5679.

3. قم بتشغيل الكود الخاص بك:
الآن، قم بتشغيل أي طلب HTTP في Django REST Framework API. عندما يصل الكود إلى نقطة التوقف، سيوقف PyCharm التنفيذ مؤقتًا، مما يسمح لك بفحص الحالة الحالية والتنقل خلال الكود.

الخطوة 6: استكشاف الأخطاء وإصلاحها

إذا واجهت خطأ ربط: العنوان قيد الاستخدام بالفعل أثناء تشغيل Docker، فإن عملية أخرى تستخدم بالفعل المنفذ 5679. في هذه الحالة، يمكنك:

  • أوقف مصحح أخطاء PyCharm وأعد تشغيل Docker.
  • قم بتغيير المنفذ في تكوين docker-compose.yml وPyCharm لتجنب التعارضات.

خاتمة

هذا هو الإعداد الذي أستخدمه لتشغيل تطبيق Django REST Framework في وضع التطوير داخل حاوية Docker باستخدام مصحح الأخطاء القوي في PyCharm. يساعدني هذا الإعداد في تصحيح أخطاء كود الواجهة الخلفية الخاص بي من خلال التنقل عبر الكود سطرًا تلو الآخر، كل ذلك محليًا.

من خلال إعداد حاوية Docker الخاصة بك للتواصل مع PyCharm، يمكنك تبسيط عملية الكتابة والاختبار وتصحيح أخطاء تطبيق Django، مما يسهل كتابة التعليمات البرمجية!

استمتع بكسر التعليمات البرمجية الخاصة بك!

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/techbychoiceorg/debug-mode-django-docker-pycharm-i8d?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3