Вступить в клуб →
лёгкаявопросDocker и сборка образов

EXPOSE в Dockerfile есть, а сервис снаружи недоступен

В Dockerfile указано:

FROM python:3.12-slim
COPY . /app
WORKDIR /app
EXPOSE 8080
CMD ["python", "-m", "app", "--host", "0.0.0.0", "--port", "8080"]

Контейнер запущен командой docker run -d --name api myapp:1.4. Внутри контейнера curl localhost:8080/health отвечает 200, а с хоста curl localhost:8080/health даёт Connection refused.

Что нужно исправить?

  • Приложение слушает не тот интерфейс, нужно указать `--host 127.0.0.1`
  • В `EXPOSE` не указан протокол: без записи вида `EXPOSE 8080/tcp` Docker считает порт объявленным только для внутренних нужд образа и не пробрасывает его на хост
  • Опубликовать порт при запуске: `docker run -p 8080:8080 ...` — `EXPOSE` только описывает образ и порт на хосте не открывает
  • Подключить контейнер к сети `host`, иначе обращения с хоста в контейнер невозможны

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела