removespread / Docker
DOCKER · МОДУЛЬ 03 · УРОК 2

Адреса, EXPOSE и публикация портов

22 мин

Проследите путь запроса от localhost на ноутбуке до HTTP-сервера внутри контейнера.

Настройка приложения~22 мин
После урока вы сможете
  • Различать порт хоста и контейнера
  • Объяснять EXPOSE и -p
  • Диагностировать неправильный bind и публикацию

У каждого окружения свой localhost

Когда вы открываете localhost в браузере на ноутбуке, вы обращаетесь к ноутбуку. Когда Python слушает 127.0.0.1 внутри контейнера, это loopback самого контейнера. Одинаковое имя не делает два сетевых окружения одним.

# Внутри app.py
HTTPServer(("0.0.0.0", 8000), Handler).serve_forever()

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

Типичный симптом неверной привязки: процесс работает, ошибок Python нет, но запрос снаружи не проходит. Менять JSON в таком случае бессмысленно — обработчик ещё не получил запрос. Начните с адреса прослушивания и фактического порта приложения.

Шаг 1 из 5