Mod Nyahpepijat: Django Docker Pycharm

PHPz
Lepaskan: 2024-09-07 14:02:02
asal
1140 orang telah melayarinya

Debug Mode: 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.

Prasyarat:

  • PyCharm Professional (untuk sokongan Docker)
  • Karang Docker dan Docker
  • Aplikasi Rangka Kerja Django REST (DRF)

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.

Langkah 1: Persediaan Fail Docker untuk Penyahpepijatan

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"]

Salin selepas log masuk

Perkara yang perlu diingat tentang kod ini

  • 241.17890.14 dalam pydevd-pycharm==241.17890.14 akan berbeza bergantung pada versi Pycharm yang anda miliki
  • Kami mendedahkan kedua-dua 8000 (port pelayan web) dan 5679 (port penyahpepijat) untuk akses luaran.

Langkah 2: Konfigurasi Karang Docker

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}

Salin selepas log masuk

Mari kita masuk ke pecahan kod

  • Kami sedang memetakan port 8000 untuk pelayan web dan port 5679 untuk penyahpepijat PyCharm.
  • extra_hosts memastikan bekas Docker anda boleh berkomunikasi dengan mesin hos menggunakan host.docker.internal.

Langkah 3: Konfigurasikan PyCharm untuk Penyahpepijatan

  1. Buat Konfigurasi Pelayan Nyahpepijat Python:
  2. Dalam PyCharm navigasi ke Run ➡️ Edit Konfigurasi.
  3. Klik butang + dan pilih Pelayan Nyahpepijat Python.
  4. Tetapkan Hos kepada 0.0.0.0 atau alamat IP mesin tempatan anda.
  5. Tetapkan Port kepada 5679 (atau yang anda dedahkan dalam persediaan Docker anda).
  6. Dan tekan Simpan!

  7. Mulakan Pelayan Debugger:
    Mulakan penyahpepijat PyCharm dengan mengklik butang Nyahpepijat (ikon pepijat hijau). Ini akan mula mendengar pada port yang kami tetapkan.

Langkah 4: Tambah Kod Penyahpepijatan Jauh ke Django

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)

Salin selepas log masuk

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.

Langkah 5: Jalankan Docker dan Debug

  1. Bina dan Jalankan Docker: Jalankan arahan berikut untuk memulakan bekas anda:
docker-compose up --build
Salin selepas log masuk

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.

Langkah 6: Menyelesaikan masalah

Jika anda menghadapi ralat bind: alamat sudah digunakan semasa menjalankan Docker, proses lain sudah menggunakan port 5679. Dalam kes ini, anda boleh:

  • Hentikan penyahpepijat PyCharm dan mulakan semula Docker.
  • Tukar port dalam konfigurasi docker-compose.yml dan PyCharm anda untuk mengelakkan konflik.

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!