Отладка контейнеризованного приложения Django в PyCharm

Разработка вашего приложения на Django в Docker может быть очень удобной. Вам не нужно устанавливать дополнительные сервисы, такие как Postgres, Nginx, Redis и т.д., на свой компьютер. Это также значительно облегчает начинающему разработчику быстрый ввод в эксплуатацию.

Однако трава не всегда зеленее. Запуск Django в Docker может создать некоторые проблемы и усложнить то, что когда-то было простым. Например, как вы устанавливаете точки останова в своем коде и выполняете отладку?

В этом кратком руководстве мы рассмотрим, как PyCharm приходит на помощь с помощью удаленного интерпретатора и интеграции с Docker, чтобы упростить отладку контейнеризованного приложения Django.

В этом посте используется Профессиональная версия PyCharm версии 2021.2.2. Чтобы узнать о различиях между профессиональной и общедоступной (бесплатной) версиями PyCharm, ознакомьтесь с Руководство для профессионалов и сообщества - Сравнение изданий.

Цели

К концу этого урока вы должны уметь делать следующее в PyCharm:

  1. Настройка параметров Docker
  2. Настройка удаленного интерпретатора
  3. Создайте конфигурацию запуска/отладки для отладки приложения Django, работающего внутри Docker

Настройки Docker в PyCharm

Первый шаг, который нам нужно сделать, это указать PyCharm, как подключиться к Docker. Для этого откройте настройки PyCharm (PyCharm > Preferences для пользователей Mac или File > Settings для пользователей Windows и Linux), а затем разверните параметр "Сборка, выполнение, развертывание". Нажмите "Docker", а затем нажмите кнопку "+", чтобы создать новую конфигурацию Docker.

PyCharm preferences

Для Mac выберите параметры Docker for Mac. Затем примените изменения.

Настройка удаленного интерпретатора

Теперь, когда мы настроили конфигурацию Docker, пришло время настроить Docker Compose в качестве удаленного интерпретатора. Предполагая, что у вас открыт проект, снова откройте настройки и разверните параметр "Проект: <your-project-name>" и нажмите "Интерпретатор Python". Щелкните значок шестеренки и выберите "Добавить".

PyCharm preferences interpreter

В следующем диалоговом окне выберите "Docker Compose" на левой панели и выберите конфигурацию Docker, которую вы создали на предыдущих шагах, в поле "Сервер". Поле "Файлы конфигурации" должно указывать на ваш файл Docker Compose, в то время как поле "Сервис" должно указывать на службу веб-приложения из вашего файла Docker Compose.

Например, если ваш файл Docker Compose выглядит следующим образом, то вам нужно указать на службу web:

version: '3.7'

services:
  web:
    build: ./app
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./app/:/usr/src/app/
    ports:
      - 8008:8000
    env_file:
      - ./.env.dev
    depends_on:
      - db
  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=hello_django
      - POSTGRES_PASSWORD=hello_django
      - POSTGRES_DB=hello_django_dev

volumes:
  postgres_data:

Отладчик подключается непосредственно к веб-службе. Все остальные службы в вашем файле Docker Compose запустятся, когда мы позже запустим конфигурацию в PyCharm

Add interpreter

Нажмите "ОК", чтобы применить изменения.

Вернувшись в диалоговое окно настройки "Интерпретатор Python", вы должны увидеть, что в проекте установлен правильный удаленный интерпретатор.

Remote interpreter

Закройте настройки.

Создайте конфигурацию запуска/отладки

Теперь, когда мы настроили PyCharm для подключения к Docker и создали конфигурацию удаленного интерпретатора на основе файла Docker Compose, мы можем создать конфигурацию запуска/отладки.

Нажмите на кнопку "Добавить конфигурацию..." в верхней части окна PyCharm.

Add run configuration

Затем нажмите кнопку "+" и выберите "Сервер Django".

Add run configuration step 2

Присвойте конфигурации имя. В этом диалоговом окне настройки важно задать для поля "Хост" значение 0.0.0.0.

Add run configuration step 3

Нажмите "ОК", чтобы сохранить конфигурацию. Теперь мы можем видеть конфигурацию запуска/отладки в верхней части окна PyCharm и то, что кнопки (для запуска, отладки и т.д.) включены.

The finished run configuration

Если вы теперь установите точки останова в своем приложении Django и нажмете кнопку отладки рядом с настройкой запуска/отладки, вы сможете отладить приложение Django, запущенное внутри контейнера Docker.

Debugging in the Docker container

Заключение

В этом руководстве мы показали вам, как настроить PyCharm для отладки приложения Django, работающего внутри Docker. Благодаря этому теперь вы можете не только отлаживать свои представления и модели, но и устанавливать точки останова и отлаживать код шаблона.

Вернуться на верх