> Как дебажить в Docker контейнере (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Sunlight

Стек: Python, Docker

> Пример ответа

Для дебага Python-приложения в Docker контейнере можно использовать несколько подходов.

1. Интерактивная отладка с pdb
Добавьте в код import pdb; pdb.set_trace() и запустите контейнер с флагами -it и --entrypoint:

BASH
docker run -it --entrypoint python your_image app.py

Теперь вы можете шагать по коду прямо в терминале.

2. Удалённый дебаг через debugpy
Установите debugpy в образ (например, в requirements.txt). В коде добавьте:

PYTHON
import debugpy
debugpy.listen(("0.0.0.0", 5678))
debugpy.wait_for_client()

Запустите контейнер с пробросом порта:

BASH
docker run -p 5678:5678 your_image

Подключитесь из IDE (VS Code, PyCharm) к localhost:5678.

3. Логирование и docker logs
Временно увеличьте уровень логирования до DEBUG и смотрите вывод:

BASH
docker logs -f container_name

4. Вход в контейнер
Запустите контейнер с bash и вручную выполните скрипт:

BASH
docker run -it --entrypoint bash your_image
python app.py

5. Использование docker-compose
В docker-compose.yml добавьте:

YAML
services:
app:
stdin_open: true
tty: true

Затем docker-compose up и docker attach <container> для взаимодействия с pdb.

Важно: для продакшена убирайте отладочные инструменты из образа, используя multi-stage сборку или переменные окружения.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью