2015-10-30 3 views
0

У меня на данный момент достаточно стек Докера, скомпилированный из многих контейнеров, один из которых запускает экземпляр Django.Отладка Django на Docker на Vagrant с IDE

На данный момент, я ограничен отладки путем импорта logging и используя

logger = logging.getLogger(__name__) 
logger.debug("your variable: " + variableName) 

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

Я привык работать в Komodo и иметь в своем распоряжении надежный отладочный отладчик, но я могу найти какие-либо документы о том, как подключить контейнер Docker внутри виртуальной виртуальной машины к среде IDE (или отладчик командной строки), который позволит мне перейти через код без восстановления.

Как подключить отладку IDE к контейнеру докера в Vagrant VM? Благодарю.

+0

Я не использовал докер, но насколько я знаю, это всего лишь система «chroot». Вы можете просто запустить свой код python в режиме отладки, а удаленное подключение к нему с debbuger – deathangel908

ответ

0

Я рекомендую вам использовать Docker Compose для обработки и соединения ваших контейнеров. Я также с помощью Docker стека на моем Dev окр с контейнером для - Джанго
- Postgres
- Nginx

Вы просто должны синхронизировать свой код с кодом внутри вашего Docker контейнера. Для этого используйте команду в файле вашей докере-компоновки. Вот пример, с 2-мя контейнерами (Джанго и Postgres):

db: 
    image: postgres 
web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
    - .:/webapp 
    ports: 
    - "8000:8000" 
    links: 
    - db 

Эта часть кода будет делать то, что вы хотите. Всего вашего проект . будет синхронизирован с /webapp папкой Docker контейнера затем, больше не нужно перестроить Docker изображение:

volumes: 
    - .:/webapp 

Затем для отладки, я рекомендую вам использовать PDB, который на мой взгляд, лучший способ для отладки Джанго приложение, запустите:

docker-compose -f [path/to/your/docker-compose.yml] --service-ports [name-of-your-django-container] python manage.py runserver 

Eg:

docker-compose -f django_project/docker-compose.yml --service-ports django python manage.py runserver 

Давайте отлаживать вид:
1. импортную PDB в представлении: import pdb
2. добавить pdb.set_trace() в методе или классе по вашему мнению,
3. Запросить правильный URL
и вы сможете отлаживать через терминал Вы должны иметь что-то вроде этого:

(Pdb) > /webapp/car/views.py(18)get() 
-> for car in serializer.data: 

Вот учебник использовать Compose и Django из Докер: Quickstart Guide: Compose and Django

+0

Это то, что я делаю. Вопрос заключается в том, как разработать из ступенчатой ​​среды IDE для перехода через код для отладки/тестирования. – Smittles

+1

У меня есть обновленный ответ. Вот как я отлаживаю проект Django с pdb в контейнере докеров.Я использую IntelliJ IDEA 15, и поскольку код не выполняется на вашем компьютере, я думаю, что вы не можете использовать, например, функцию точки останова вашей среды IDE. –

+1

И я думаю, это не то, что вы делаете, потому что я это делаю, и мне не нужно перестраивать контейнеры. Я могу тестировать/отлаживать в реальном времени через терминал моей IDE –

Смежные вопросы