> Как дебажить в Docker контейнере (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Sunlight
Стек: Python, Docker
> Пример ответа
Для дебага Python-приложения в Docker контейнере можно использовать несколько подходов.
1. Интерактивная отладка с pdb
Добавьте в код import pdb; pdb.set_trace() и запустите контейнер с флагами -it и --entrypoint:
BASHdocker run -it --entrypoint python your_image app.py
Теперь вы можете шагать по коду прямо в терминале.
2. Удалённый дебаг через debugpy
Установите debugpy в образ (например, в requirements.txt). В коде добавьте:
PYTHONimport debugpydebugpy.listen(("0.0.0.0", 5678))debugpy.wait_for_client()
Запустите контейнер с пробросом порта:
BASHdocker run -p 5678:5678 your_image
Подключитесь из IDE (VS Code, PyCharm) к localhost:5678.
3. Логирование и docker logs
Временно увеличьте уровень логирования до DEBUG и смотрите вывод:
BASHdocker logs -f container_name
4. Вход в контейнер
Запустите контейнер с bash и вручную выполните скрипт:
BASHdocker run -it --entrypoint bash your_imagepython app.py
5. Использование docker-compose
В docker-compose.yml добавьте:
YAMLservices:app:stdin_open: truetty: true
Затем docker-compose up и docker attach <container> для взаимодействия с pdb.
Важно: для продакшена убирайте отладочные инструменты из образа, используя multi-stage сборку или переменные окружения.
> Похожие задачи по Python
Считаешь ли паттерны проектирования нужными
Какие планы по развитию как программиста на ближайшие годы
Что происходит при запросе с использованием звездочки в Redis
Почему Redis может отвечать медленно
> Похожие задачи по backend
Считаешь ли паттерны проектирования нужными
Какие планы по развитию как программиста на ближайшие годы
Что происходит при запросе с использованием звездочки в Redis
Почему Redis может отвечать медленно
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью