Контейнер Docker работает, но не удается заставить браузер работать

Я использую Python3.10 и создаю базового чат-бота для вопросов и ответов. Я создал образ докера, используя следующий файл докеров:

FROM python:3.10.14-bookworm
WORKDIR /app
COPY ./app/requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 8080
CMD ["streamlit", "run", "app/app.py", "--server.port", "8080"]

Я использовал команду docker build -t chatbotimg . для создания образа докера, и он тоже был создан, но когда я попытался запустить его, все началось, как показано ниже:

Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.

You can now view your Streamlit app in your browser.

Local URL: http://localhost:8080
Network URL: http://172.17.0.1:8080
External URL: http://105.222.203.146:8080

Но когда я нажал на ссылку, браузер не работал, выдал ошибку (браузер Safari): Safari Невозможно открыть страницу «localhost:8080», потому что Safari не может подключиться к серверу «localhost». Может ли кто-нибудь помочь мне решить эту проблему?

Как вы управляете контейнером? У вас есть вариант docker run -p? Вам нужно настроить приложение для прослушивания 0.0.0.0, а не только частного контейнера localhost?

David Maze 25.06.2024 15:42

@DavidMaze, я новичок в докере, я просто пытаюсь создать базовое приложение, да, у меня есть опция docker run -p, я запустил ее с помощью команды «docker runchatbotimg». Сейчас я просто проверяю это на локальном хосте.

ujjwal anand 25.06.2024 15:46

«localhost» или 127.0.0.1 не совпадают для вашего хоста и контейнера. Каждый контейнер имеет свой собственный интерфейс обратной связи, отдельный от всех остальных. Вы просматриваете интерфейс обратной связи вашего хоста, но контейнер обслуживает сам по себе, поэтому это не может работать.

Ulrich Eckhardt 25.06.2024 15:55
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно сопоставить порты вашего компьютера с контейнером, попробуйте следующее:

docker build -t chatbotimg .
docker run -p 127.0.0.1:8080:8080 chatbotimg 

Круто, большое спасибо за помощь. Теперь это работает.

ujjwal anand 25.06.2024 15:57

Рад это слышать, удачи!

Captain Chaos 25.06.2024 16:02

Как вы управляете контейнером? Вам необходимо связать порт 8080 вашего контейнера с портом 8080 вашего хост-компьютера. Вы сможете сделать это, запустив:

docker run -p 8080:8080 chatbotimg

Круто, большое спасибо за помощь. Теперь это работает.

ujjwal anand 25.06.2024 15:57

Другие вопросы по теме