작성 중인 코드를 제대로 디버그하기 위해 로컬 설정을 얻는 데는 개발자가 인정하는 것보다 더 많은 시간이 걸립니다. 그리고 이것은 대부분 일회성 설정이므로 기록하지 않으면 기억하지 못할 것이라는 점을 잊지 마십시오. 이 게시물은 정확한 문제를 해결하기 위해 여기에 있습니다! 로컬 개발 환경을 설정하고 실행하는 방법을 서면으로 상기시켜 주세요.
이 게시물에서는 디버그 모드에 필요한 업데이트 외에 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"]
이 코드에서 주의할 점
데이터베이스 및 기타 서비스와 함께 웹 서비스(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 디버거에 연결하려면 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는 이전에 노출한 것과 일치합니다.
docker-compose up --build
이렇게 하면 Docker 이미지가 빌드되고 개발 모드에서 실행되는 Django를 포함한 서비스가 시작됩니다.
2. 중단점 설정:
PyCharm 내에서 Django 코드에 중단점을 설정하세요. 컨테이너가 포트 5679에서 실행되는 PyCharm 디버그 서버에 연결되므로 중단점이 작동해야 합니다.
3. 코드 실행:
이제 Django REST Framework API에서 HTTP 요청을 트리거하세요. 코드가 중단점에 도달하면 PyCharm이 실행을 일시 중지하여 현재 상태를 검사하고 코드를 단계별로 실행할 수 있습니다.
Docker를 실행하는 동안 바인딩: 주소가 이미 사용 중이라는 오류가 발생하면 다른 프로세스가 이미 포트 5679를 사용하고 있는 것입니다. 이 경우 다음을 수행할 수 있습니다.
이것은 PyCharm의 강력한 디버거를 사용하여 Docker 컨테이너 내부의 개발 모드에서 Django REST Framework 애플리케이션을 실행하는 데 사용하는 설정입니다. 이 설정은 코드를 한 줄씩 로컬에서 실행하여 백엔드 코드를 디버그하는 데 도움이 됩니다.
PyCharm과 통신하도록 Docker 컨테이너를 설정하면 Django 애플리케이션 작성, 테스트, 디버깅이 단순화되어 코드 작성이 더 쉬워집니다!
재미있게 코드를 깨보세요!
위 내용은 디버그 모드: Django Docker Pycharm의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!