Контейнер docker для Django зависает при обновлении монтируемых источников
В рамках курса, который я сейчас прохожу, есть ситуация, когда используется следующая комбинация:
Для очень стандартного сценария создается контейнер docker: Один для Django, второй для базы данных Postgresql, а затем файл compose управляет всем этим. А исходники фактически монтируются с помощью томов docker-compose.
Все приложение, которое я создал во время курса, доступно на моем github: https://github.com/arsenhakobyan/recipe-app-api
Проблема, с которой я столкнулся, заключается в выполнении команды django test каждый раз, когда я обновляю любой исходный файл.
Шаги для воспроизведения проблемы, которая у меня возникла:
- постройте изображения с помощью docker-compose build
- выполните следующую команду: docker-compose run --rm app sh -c "python manage.py test"
- Процесс должен запуститься, как ожидалось.
- Отредактируйте любой файл (например, app->user->tests->test_user_api.py) и сохраните изменения .
- выполните команду из шага 2. Процесс зависает на этом этапе в моем случае, и я даже не могу заставить удалить контейнеры docker, даже попытался деактивировать некоторые конечные точки из сети, которая связана с этими контейнерами (я думаю, что это может помочь, когда я читаю некоторые сообщения об ошибках). Единственный способ продолжить работу - перезапустить docker exe на моей машине.
Дайте мне знать, если это будет предпочтительнее, чтобы скопировать некоторый код или содержимое файла здесь.
Немного информации о машине и версии docker: машина: Machbook Pro, MacOS Moterey версия 12.3.1 docker: Docker Desktop 4.8.2 (79419) docker-compose версия 1.29.2, сборка 5becea4c
В моем опыте это было связано с большой нагрузкой на контейнеры docker. У меня был мой веб-сервер + redis + postgre сервисы, собранные локально, все в моем docker compose, и это вызвало проблему. Я перенес сервис postgre на AWS и не использовал для этого образ docker, так что теперь в docker compose работают только redis и webserver, и он не зависает всякий раз, когда я обновляю любой код в моем проекте и плавно перестраиваюсь.