2015-06-15 2 views
20

Я вижу, что я не первый, чтобы задать вопрос, но не было никакого ясного ответа на этот вопрос:Докер-Compose и PDB

Как использовать PDB с Докер-композитором в разработке 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, которые я надеваю» t желание вообще.

Люди доброй воли, пожалуйста, помогите мне.

PS
Я использую pdb ++ для этого примера и базовый docker-compose.yml от this django example. Также я экспериментировал, но мне ничего не помогает. И я использую docker-composer 1.3.0rc3, так как он поддерживает поддержку Dockerfile.

ответ

19

Попробуйте запустить свой веб-контейнер с возможностью --service-портов: docker-compose run --service-ports web

+0

Это сделал это! Спасибо, добрый сэр. Теперь я использую docker-compose для создания моей среды и запуска моей службы или ее тестов с помощью 'docker-compose run -rm -service-ports my-awesome-app python app.py 0.0.0.0: 8000'. Прощай, бродяга! – McAbra

+0

У меня проблема с этим методом. Мой терминал пуст, когда я набираю что-то в pdb. – Jitu

+0

Вы попадаете в подсказку pdb? Я не знаю, как помочь без дополнительной информации, например, какую структуру вы используете, какие услуги и т. Д. – Jamey

27

Используйте следующие шаги, чтобы прикрепить PDB на любой питон скрипт.

Шаг 1. Добавьте в ваш файл YML

stdin_open: true 
tty: true 

Это позволит в интерактивном режиме и присоединит стандартного ввода. Это эквивалентно для режима -it.

Шаг 2.

docker attach <generated_instanceid> 

Теперь вы получите PDB оболочку

+0

Это отлично сработало для меня, когда я пытаюсь запустить все свои контейнеры с помощью 'docker-compose up', спасибо. – Nobilis

+2

По какой-то причине это не работает для меня. У меня есть версия для док-станции 2.1 – Divick

+0

Учитывая обрамление вопроса, я удивлен, что это не принятый ответ. Имеет несколько причуд, но абсолютно делает то, о чем просили. –