Rumah >pembangunan bahagian belakang >Tutorial Python >Mod Nyahpepijat: Django Docker Pycharm
Mendapatkan persediaan setempat anda untuk nyahpepijat kod yang anda tulis dengan betul memerlukan lebih banyak masa daripada mana-mana pembangun ingin mengakui. Dan jangan lupa ini kebanyakannya adalah persediaan satu-dan-selesai, jadi jika kita tidak menulisnya, kita tidak akan ingat. Siaran ini di sini untuk menyelesaikan isu yang tepat itu! Biarkan ini berfungsi sebagai peringatan bertulis tentang cara mengaktifkan dan menjalankan persekitaran pembangun setempat anda.
Siaran ini tidak akan merangkumi butiran tentang persediaan komposer Django, Docker atau Docker di luar kemas kini yang diperlukan untuk mod nyahpepijat. Ia mengandaikan anda sudah mempunyai pengetahuan yang berkesan tentang cara membuat bahagian itu berfungsi.
Sediakan Dockerfile anda untuk dijalankan dalam mod pembangun dan benarkan sambungan daripada penyahpepijat PyCharm.
Di bawah ialah contoh 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"]
Perkara yang perlu diingat tentang kod ini
Mari dapatkan fail docker-compose.yml kami untuk mengkonfigurasi perkhidmatan web (apl Django) bersama pangkalan data dan perkhidmatan lain.
Berikut ialah contoh 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}
Mari kita masuk ke pecahan kod
Dan tekan Simpan!
Mulakan Pelayan Debugger:
Mulakan penyahpepijat PyCharm dengan mengklik butang Nyahpepijat (ikon pepijat hijau). Ini akan mula mendengar pada port yang kami tetapkan.
Dalam projek Django anda, anda perlu menambah kod berikut dalam manage.py atau wsgi.py anda untuk menyambung ke penyahpepijat PyCharm:
import pydevd_pycharm # Connect to the PyCharm debug server pydevd_pycharm.settrace('host.docker.internal', port=5679, stdoutToServer=True, stderrToServer=True, suspend=False)
Coretan ini memberitahu apl Django anda untuk menyambung kembali ke penyahpepijat PyCharm yang dijalankan pada mesin hos anda. host.docker.internal menyelesaikan kepada mesin hos dalam Docker, dan port=5679 sepadan dengan yang kami dedahkan sebelum ini.
docker-compose up --build
Ini akan membina imej Docker dan memulakan perkhidmatan, termasuk Django berjalan dalam mod pembangunan.
2. Tetapkan Titik Putus:
Tetapkan titik putus dalam kod Django anda dalam PyCharm. Titik putus harus berfungsi kerana bekas anda akan bersambung ke pelayan nyahpepijat PyCharm yang dijalankan pada port 5679.
3. Cetuskan Kod Anda:
Sekarang, cetuskan sebarang permintaan HTTP dalam API Rangka Kerja Django REST anda. Apabila kod mencapai titik putus, PyCharm akan menjeda pelaksanaan, membolehkan anda memeriksa keadaan semasa dan melangkah melalui kod tersebut.
Jika anda menghadapi ralat bind: alamat sudah digunakan semasa menjalankan Docker, proses lain sudah menggunakan port 5679. Dalam kes ini, anda boleh:
Ini ialah persediaan yang saya gunakan untuk menjalankan aplikasi Rangka Kerja Django REST saya dalam mod pembangunan di dalam bekas Docker menggunakan penyahpepijat berkuasa PyCharm. Persediaan ini membantu saya menyahpepijat kod bahagian belakang saya dengan melangkah melalui kod baris demi baris, semuanya secara setempat.
Dengan menyediakan bekas Docker anda untuk berkomunikasi dengan PyCharm, anda memudahkan menulis, menguji dan menyahpepijat aplikasi Django anda, menjadikannya lebih mudah untuk menulis kod!
Selamat memecahkan kod anda!
Atas ialah kandungan terperinci Mod Nyahpepijat: Django Docker Pycharm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!