Ответ 1
Попробуйте запустить веб-контейнер с опцией -service-ports: docker-compose run --service-ports web
Я вижу, что я не первый, кто задал вопрос, но на этот вопрос не было однозначного ответа:
Как использовать pdb с docker-composer в разработке Python?
Когда вы спрашиваете дядю Google о django docker
, вы получаете замечательные примеры и учебные пособия докер-композитора, и у меня есть работающая среда - я могу запустить docker-compose up
, и у меня отличная среда разработки , но PDB не работает (что очень печально).
Я могу решить с запуском docker-compose run my-awesome-app python app.py 0.0.0.0:8000
, но затем я могу получить доступ к моему приложению через http://127.0.0.1:8000 от хоста (я могу с docker-compose up
), и кажется, что каждый раз, когда я использую run
, новые контейнеры создаются как: dir_app_13
и dir_db_4
, которые я вообще не хочу.
Люди доброй воли, пожалуйста, помогите мне.
PS
Я использую pdb ++ для этого примера и базовый docker-compose.yml из этот пример django. Также я экспериментировал, но мне ничего не помогает. И я использую docker-composer 1.3.0rc3, так как он поддерживает поддержку указателей Dockerfile.
Попробуйте запустить веб-контейнер с опцией -service-ports: docker-compose run --service-ports web
Используйте следующие шаги, чтобы прикрепить pdb к любому скрипту python.
Шаг 1. Добавьте следующее в ваш файл yml
stdin_open: true
tty: true
Это включит интерактивный режим и подключит стандартный ввод. Это эквивалентно режиму -it.
Шаг 2.
docker attach <generated_containerid>
Теперь вы получите оболочку pdb
До моего опыта команда docker-compose up
не предоставляла интерактивную оболочку, но запускает печать STDOUT в оболочку только для чтения по умолчанию.
Или, если вы указали и сопоставили каталог журналов, команда docker-compose up
ничего не напечатает на подключенной оболочке, но отправит вывод в ваши сопоставленные журналы. Таким образом, вы должны прикрепить контейнер отдельно после его запуска.
когда вы делаете docker-compose up
, сделайте это в отдельном режиме через -d
и подключитесь к контейнеру через
docker exec -it your_container_name bash