आप जो कोड लिख रहे हैं उसे ठीक से डीबग करने के लिए अपना स्थानीय सेटअप प्राप्त करने में किसी भी डेवलपर की तुलना में अधिक समय लगता है। और हमें यह नहीं भूलना चाहिए कि यह अधिकतर एक बार किया गया सेटअप है, इसलिए यदि हम इसे नहीं लिखेंगे, तो हमें याद नहीं रहेगा। यह पोस्ट उसी सटीक समस्या को हल करने के लिए यहाँ है! इसे एक लिखित अनुस्मारक के रूप में काम करने दें कि अपने स्थानीय विकास परिवेश को कैसे चालू और संचालित किया जाए।
यह पोस्ट डिबग मोड के लिए आवश्यक अपडेट के अलावा Django, Docker, या Docker कंपोज़र सेटअप के बारे में विवरण शामिल नहीं करेगी। यह माना जाता है कि आपको पहले से ही इस बात का कार्यसाधक ज्ञान है कि उस भाग को कैसे कार्यान्वित किया जाए।
डेव मोड में चलने और 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"]
इस कोड के बारे में ध्यान रखने योग्य बातें
आइए डेटाबेस और अन्य सेवाओं के साथ वेब सेवा (Django ऐप) को कॉन्फ़िगर करने के लिए हमारी docker-compose.yml फ़ाइल प्राप्त करें।
यहां एक नमूना 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 प्रोजेक्ट में, आपको PyCharm डिबगर से कनेक्ट करने के लिए अपने मैनेज.py या wsgi.py में निम्नलिखित कोड जोड़ना होगा:
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 डॉकर में होस्ट मशीन का समाधान करता है, और port=5679 हमारे द्वारा पहले उजागर की गई मशीन से मेल खाता है।
docker-compose up --build
यह डॉकर छवि का निर्माण करेगा और विकास मोड में चलने वाले Django सहित सेवाएं शुरू करेगा।
2. ब्रेकप्वाइंट सेट करें:
PyCharm के भीतर अपने Django कोड में ब्रेकप्वाइंट सेट करें। ब्रेकप्वाइंट को काम करना चाहिए क्योंकि आपका कंटेनर पोर्ट 5679 पर चलने वाले PyCharm डिबग सर्वर से कनेक्ट होगा।
3. अपना कोड ट्रिगर करें:
अब, अपने Django REST Framework API में किसी भी HTTP अनुरोध को ट्रिगर करें। जब कोड ब्रेकप्वाइंट पर पहुंचता है, तो PyCharm निष्पादन रोक देगा, जिससे आप वर्तमान स्थिति का निरीक्षण कर सकेंगे और कोड के माध्यम से आगे बढ़ सकेंगे।
यदि आपको डॉकर चलाते समय बाइंड: एड्रेस पहले से ही उपयोग में आने वाली त्रुटि का सामना करना पड़ता है, तो एक अन्य प्रक्रिया पहले से ही पोर्ट 5679 का उपयोग करती है। इस मामले में, आप यह कर सकते हैं:
यह वह सेटअप है जिसका उपयोग मैं अपने Django REST फ्रेमवर्क एप्लिकेशन को PyCharm के शक्तिशाली डिबगर का उपयोग करके डॉकर कंटेनर के अंदर विकास मोड में चलाने के लिए करता हूं। यह सेटअप मुझे स्थानीय स्तर पर कोड लाइन दर लाइन चरणबद्ध तरीके से अपना बैकएंड कोड डीबग करने में मदद करता है।
PyCharm के साथ संचार करने के लिए अपने डॉकर कंटेनर को सेट करके, आप अपने Django एप्लिकेशन को लिखना, परीक्षण करना और डीबग करना आसान बनाते हैं, जिससे कोड लिखना आसान हो जाता है!
अपना कोड तोड़ने का आनंद लें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3