찾다
백엔드 개발파이썬 튜토리얼디버그 모드: Django Docker Pycharm

Debug Mode: Django Docker Pycharm

작성 중인 코드를 제대로 디버그하기 위해 로컬 설정을 얻는 데는 개발자가 인정하는 것보다 더 많은 시간이 걸립니다. 그리고 이것은 대부분 일회성 설정이므로 기록하지 않으면 기억하지 못할 것이라는 점을 잊지 마십시오. 이 게시물은 정확한 문제를 해결하기 위해 여기에 있습니다! 로컬 개발 환경을 설정하고 실행하는 방법을 서면으로 상기시켜 주세요.

전제 조건:

  • PyCharm Professional(Docker 지원용)
  • Docker와 Docker Compose
  • 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"]

이 코드에서 주의할 점

  • pydevd-pycharm==241.17890.14의 241.17890.14는 사용 중인 Pycharm 버전에 따라 다를 수 있습니다
  • 외부 액세스를 위해 8000(웹 서버 포트)과 5679(디버거 포트)를 모두 노출하고 있습니다.

2단계: Docker Compose 구성

데이터베이스 및 기타 서비스와 함께 웹 서비스(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}

코드 분석을 살펴보겠습니다

  • 웹 서버용 포트 8000과 PyCharm 디버거용 포트 5679를 매핑하고 있습니다.
  • extra_hosts는 Docker 컨테이너가 host.docker.internal을 사용하여 호스트 시스템과 통신할 수 있도록 보장합니다.

3단계: 디버깅을 위해 PyCharm 구성

  1. Python 디버그 서버 구성 생성:
  2. PyCharm에서 실행 ➡️ 구성 편집으로 이동합니다.
  3. + 버튼을 클릭하고 Python 디버그 서버를 선택하세요.
  4. 호스트를 0.0.0.0 또는 로컬 컴퓨터의 IP 주소로 설정하세요.
  5. 포트를 5679(또는 Docker 설정에 노출한 포트)로 설정하세요.
  6. 저장을 누르세요!

  7. 디버거 서버 시작:
    디버그 버튼(녹색 버그 아이콘)을 클릭하여 PyCharm 디버거를 시작합니다. 그러면 우리가 설정한 포트에서 듣기가 시작됩니다.

4단계: Django에 원격 디버깅 코드 추가

Django 프로젝트에서 PyCharm 디버거에 연결하려면 Manage.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은 Docker의 호스트 시스템으로 확인되며 port=5679는 이전에 노출한 것과 일치합니다.

5단계: Docker 실행 및 디버그

  1. Docker 빌드 및 실행: 다음 명령어를 실행하여 컨테이너를 시작하세요.
docker-compose up --build

이렇게 하면 Docker 이미지가 빌드되고 개발 모드에서 실행되는 Django를 포함한 서비스가 시작됩니다.

2. 중단점 설정:
PyCharm 내에서 Django 코드에 중단점을 설정하세요. 컨테이너가 포트 5679에서 실행되는 PyCharm 디버그 서버에 연결되므로 중단점이 작동해야 합니다.

3. 코드 실행:
이제 Django REST Framework API에서 HTTP 요청을 트리거하세요. 코드가 중단점에 도달하면 PyCharm이 실행을 일시 중지하여 현재 상태를 검사하고 코드를 단계별로 실행할 수 있습니다.

6단계: 문제 해결

Docker를 실행하는 동안 바인딩: 주소가 이미 사용 중이라는 오류가 발생하면 다른 프로세스가 이미 포트 5679를 사용하고 있는 것입니다. 이 경우 다음을 수행할 수 있습니다.

  • PyCharm 디버거를 중지하고 Docker를 다시 시작하세요.
  • 충돌을 방지하려면 docker-compose.yml 및 PyCharm 구성에서 포트를 변경하세요.

결론

이것은 PyCharm의 강력한 디버거를 사용하여 Docker 컨테이너 내부의 개발 모드에서 Django REST Framework 애플리케이션을 실행하는 데 사용하는 설정입니다. 이 설정은 코드를 한 줄씩 로컬에서 실행하여 백엔드 코드를 디버그하는 데 도움이 됩니다.

PyCharm과 통신하도록 Docker 컨테이너를 설정하면 Django 애플리케이션 작성, 테스트, 디버깅이 단순화되어 코드 작성이 더 쉬워집니다!

재미있게 코드를 깨보세요!

위 내용은 디버그 모드: Django Docker Pycharm의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬과 시간 : 공부 시간을 최대한 활용파이썬과 시간 : 공부 시간을 최대한 활용Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기