يستغرق الحصول على الإعداد المحلي الخاص بك لتصحيح التعليمات البرمجية التي تكتبها بشكل صحيح وقتًا أطول مما يود أي مطور الاعتراف به. ودعونا لا ننسى أن هذا في الغالب عبارة عن إعداد يتم تنفيذه مرة واحدة، لذا إذا لم نكتبه، فلن نتذكره. هذه المشاركة هنا لحل هذه المشكلة بالتحديد! اجعل هذا بمثابة تذكير مكتوب لكيفية تشغيل بيئة التطوير المحلية لديك.
لن يغطي هذا المنشور تفاصيل حول إعداد ملحن Django أو Docker أو Docker خارج التحديثات المطلوبة لوضع التصحيح. يفترض أن لديك بالفعل معرفة عملية حول كيفية تشغيل هذا الجزء.
قم بإعداد ملف 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 الخاص بنا لتكوين خدمة الويب (تطبيق 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 بالنقر فوق الزر Debug (رمز الخطأ الأخضر). سيبدأ هذا الاستماع على المنفذ الذي قمنا بتعيينه.
في مشروع 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 مع المنفذ الذي كشفناه سابقًا.
docker-compose up --build
سيؤدي هذا إلى إنشاء صورة Docker وبدء الخدمات، بما في ذلك تشغيل Django في وضع التطوير.
2. تعيين نقاط التوقف:
قم بتعيين نقاط التوقف في كود Django الخاص بك داخل PyCharm. يجب أن تعمل نقاط التوقف لأن حاويتك ستتصل بخادم تصحيح الأخطاء PyCharm الذي يعمل على المنفذ 5679.
3. قم بتشغيل الكود الخاص بك:
الآن، قم بتشغيل أي طلب HTTP في Django REST Framework API. عندما يصل الكود إلى نقطة التوقف، سيوقف PyCharm التنفيذ مؤقتًا، مما يسمح لك بفحص الحالة الحالية والتنقل خلال الكود.
إذا واجهت خطأ ربط: العنوان قيد الاستخدام بالفعل أثناء تشغيل Docker، فإن عملية أخرى تستخدم بالفعل المنفذ 5679. في هذه الحالة، يمكنك:
هذا هو الإعداد الذي أستخدمه لتشغيل تطبيق Django REST Framework في وضع التطوير داخل حاوية Docker باستخدام مصحح الأخطاء القوي في PyCharm. يساعدني هذا الإعداد في تصحيح أخطاء كود الواجهة الخلفية الخاص بي من خلال التنقل عبر الكود سطرًا تلو الآخر، كل ذلك محليًا.
من خلال إعداد حاوية Docker الخاصة بك للتواصل مع PyCharm، يمكنك تبسيط عملية الكتابة والاختبار وتصحيح أخطاء تطبيق Django، مما يسهل كتابة التعليمات البرمجية!
استمتع بكسر التعليمات البرمجية الخاصة بك!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3