Настройка локальной системы для правильной отладки кода, который вы пишете, занимает больше времени, чем хотелось бы признать любому разработчику. И давайте не будем забывать, что это по большей части одноразовая установка, поэтому, если мы ее не запишем, мы не запомним. Этот пост предназначен для решения именно этой проблемы! Пусть это послужит письменным напоминанием о том, как настроить и запустить локальную среду разработки.
В этом посте не будут подробно описаны настройки композитора 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"]
Что следует помнить об этом коде
Давайте создадим наш файл docker-compose.yml для настройки веб-службы (приложения Django), а также базы данных и других служб.
Вот пример 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 вам нужно будет добавить следующий код в файл Manage.py или wsgi.py для подключения к отладчику PyCharm:
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, а порт = 5679 соответствует тому, который мы указали ранее.
docker-compose up --build
Это создаст образ Docker и запустит службы, включая Django, работающий в режиме разработки.
2. Установить точки останова:
Установите точки останова в своем коде Django в PyCharm. Точки останова должны работать, поскольку ваш контейнер будет подключаться к серверу отладки PyCharm, работающему через порт 5679.
3. Запустите свой код:
Теперь запустите любой HTTP-запрос в вашем API Django REST Framework. Когда код достигает точки останова, PyCharm приостановит выполнение, позволяя вам проверить текущее состояние и выполнить код.
Если вы столкнулись с ошибкой привязки: адрес уже используется при запуске Docker, другой процесс уже использует порт 5679. В этом случае вы можете:
Это настройка, которую я использую для запуска приложения Django REST Framework в режиме разработки внутри контейнера Docker с использованием мощного отладчика PyCharm. Эта настройка помогает мне отлаживать мой серверный код, проходя его построчно, локально.
Настроив Docker-контейнер для взаимодействия с PyCharm, вы упростите написание, тестирование и отладку приложения Django, упрощая написание кода!
Удачи в взломе кода!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3