Отладка Django с кодом VS внутри контейнера Docker завершает работу контейнера

#django #docker #visual-studio-code

Вопрос:

Я следую этому руководству по отладке Django внутри контейнера Docker с использованием кода VS. Единственное отличие, которое я сделал,-это изменил порты на 8000 и хост 0.0.0.0 , потому что в моем docker-compose это так. Я понятия не имею, почему веб-контейнер отключается, когда я запускаю Django с точкой останова внутри представления, потому что я действительно не знаю, откуда берется проблема. Мое единственное предположение основано на vscode/launch.json файле, который настроен следующим образом:

 {
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Run Django",
      "type": "python",
      "request": "attach",
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/app",
          "remoteRoot": "/usr/src/app"
        }
      ],
      "port": 8000,
      "host": "0.0.0.0",
    }
  ]
} 
 

Есть какие-нибудь идеи, почему это не работает или откуда берется проблема?

Ответ №1:

Вы используете Mac или WSL1? Я видел, как у Docker заканчивалась память в VSCode при использовании отладчика, особенно с точками останова.

Виртуализация Docker находится на уровне ОС, однако для достижения этой виртуализации ОС ядро вашей машины должно быть таким же, как у вашего контейнера (поэтому в Windows есть WSL2), но macOS работает на Darwin, а не на Linux, поэтому ему нужен другой уровень (виртуальная машина LinuxKit).

Пожалуйста, проверьте, есть ли в настройках Докера эта вкладка «Ресурсы». Если это так, дайте ему еще немного памяти, отладка VSCode в Django довольно тяжелая.

введите описание изображения здесь

Комментарии:

1. Спасибо за ответ. У меня есть вкладка «Настройки», и она обновлена до 5 ГБ, но контейнер продолжает отключаться. Кстати, я на Mac, это может быть причиной проблемы

2. Попробуйте запустить top команду внутри контейнера, чтобы увидеть, не взорвется ли память. Также увеличьте не только память, но и подкачку.