Я использую 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». Может ли кто-нибудь помочь мне решить эту проблему?
@DavidMaze, я новичок в докере, я просто пытаюсь создать базовое приложение, да, у меня есть опция docker run -p, я запустил ее с помощью команды «docker runchatbotimg». Сейчас я просто проверяю это на локальном хосте.
«localhost» или 127.0.0.1 не совпадают для вашего хоста и контейнера. Каждый контейнер имеет свой собственный интерфейс обратной связи, отдельный от всех остальных. Вы просматриваете интерфейс обратной связи вашего хоста, но контейнер обслуживает сам по себе, поэтому это не может работать.


Вам нужно сопоставить порты вашего компьютера с контейнером, попробуйте следующее:
docker build -t chatbotimg .
docker run -p 127.0.0.1:8080:8080 chatbotimg
Круто, большое спасибо за помощь. Теперь это работает.
Рад это слышать, удачи!
Как вы управляете контейнером? Вам необходимо связать порт 8080 вашего контейнера с портом 8080 вашего хост-компьютера. Вы сможете сделать это, запустив:
docker run -p 8080:8080 chatbotimg
Круто, большое спасибо за помощь. Теперь это работает.
Как вы управляете контейнером? У вас есть вариант
docker run -p? Вам нужно настроить приложение для прослушивания 0.0.0.0, а не только частного контейнераlocalhost?