Как развернуть приложениеstreamlit в веб-приложении Azure

мой файл докера содержит ниже:


FROM python:3.10.11
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
# Command to run the app
 

но когда я пытаюсь запустить Docker-контейнер через порт 8000, он запускается через 8501, как показано ниже:

docker build -t streamlit-meetingsumeriserqa:1.0 .
docker images
REPOSITORY                     TAG       IMAGE ID       CREATED         SIZE
streamlit-meetingsumeriserqa   1.0       973c4ae49cd6   5 minutes ago   8.72GB
docker run -p 8000:8000 streamlit-meetingsumeriserqa:1.0
 
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.
 
 
  You can now view your Streamlit app in your browser.
 
  Local URL: http://localhost:8501
  Network URL: http://172.17.0.2:8501
  External URL: http://49.37.72.174:8501

также в веб-браузере он не открывается по адресу localhost:8501, поэтому нам нужно изменить какой-либо порт или что-то в этом роде.

также, когда я пытаюсь отправить контейнер Docker в реестр контейнеров Azure, выполнив быстрый запуск на самом портале. но при попытке указать имя пользователя и пароль выдается ошибка тайм-аута клиента. как показано ниже:

docker login meetingsummeriser.azurecr.io
Username: meetingsummeriser
Password:
Error response from daemon: Get "
https://meetingsummeriser.azurecr.io/v2/":
net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

также наше веб-приложение поддерживает CORS, поэтому мы используем:

python -m streamlit run Login.py --server.port 8000 --server.address 0.0.0.0 --server.enableCORS=false --server.enableXsrfProtection=false

Помимо вышеуказанной проблемы, просто хотел узнать, как потоковая передача работает на порту 8501, но веб-приложение Azure поддерживает порт 8000, так какие изменения в коде мне нужно сделать?

Поскольку я новичок в этом, буду благодарен за любую помощь.

Если возможно, поделитесь своим кодом, который вы пробовали.

Aslesha Kantamsetti 05.06.2024 13:16
Пожалуйста, не загружайте изображения кода/данных/ошибок. Можете ли вы отредактировать вопрос, чтобы заменить снимки экрана с выводом ошибок обычным текстом?
David Maze 05.06.2024 13:18

Команда python -m streamlit run, которую вы показываете, существенно отличается от Dockerfile CMD. Как вы вызываете эту команду?

David Maze 05.06.2024 13:19

@AsleshaKantamsetti, я заменил скриншоты кодом.

Pam 05.06.2024 14:31

@DavidMaze, я заменил скриншоты кодом, а также обновил свой файл докеров. и передать python -m streamlit run в команде запуска в веб-приложении

Pam 05.06.2024 14:34

@Pam Если вы хотите запустить приложение локально с помощью образа docker, запустите docker — p 8501:8000 <yourimageName>:tag

Aslesha Kantamsetti 05.06.2024 14:43

@Pam az acr login -n <имя регистрации контейнера Azure> — это команда для отправки вашего образа в систему регистрации приложений Azure.

Aslesha Kantamsetti 05.06.2024 14:53

@AsleshaKantamsetti, я запускаю это docker run -p 8501:8000 streamlit-meetingsumeriserqa:1.0, но оно не открывается в веб-браузере.

Pam 06.06.2024 07:25

@Pam У вас есть только порт контейнера 8000, но в команде для запуска потока вы не упомянули порт. поэтому приложение работает на порту по умолчанию, который равен 8501. вам нужно упомянуть это в команде CMD ["streamlit", "run", "app.py", "--server.port=8000", "--server.address=0.0.0.0"], чтобы прослушивать порт 8000. и для запуска контейнера докеров вам нужно использовать `docker run -p <любой локальный порт>:8000streamlit -meetingsumeriserqa:1.0`

Aslesha Kantamsetti 06.06.2024 07:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
9
212
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Выполните следующие действия, чтобы развернуть приложениеstreamlit в службе приложений Azure с помощью реестра контейнеров Azure и Docker.

Спасибо @docs.streamlit.io за объяснение.

  • Я попробовал пример кода из этой Документации

  • В CMD я определил порт, на котором хочу запустить приложение.

Докерфайл:

FROM python:3.12
WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app/
EXPOSE 8000
CMD ["streamlit", "run", "app.py", "--server.port=8000", "--server.address=0.0.0.0"]

В файл требований.txt вам нужно добавить пакет streamlit.

streamlit

В команде Docker Run вы можете определить любой локальный порт, который вы хотите сопоставить с портом Docker.

Используя приведенные ниже команды, я создаю и запускаю образ докера локально.

docker build -t <ImageName> .
docker run -d -p <LocalPort>:<HostPortInDocker>  <ImageName>

Локальный выход:

  • В реестре контейнеров Azure вам необходимо включить администратора для авторизации.

Я использовал приведенные ниже команды, чтобы отправить мой локальный образ в реестр контейнеров Azure.

az acr login --n<AzureContainerRegistryName>.azurecr.io
docker tag <ImageName> <AzureContainerRegistryName>.azurecr.io/<ImageName>:<tag>
docker push <AzureContainerRegistryName>.azurecr.io/<ImageName>:<tag>
  • При создании веб-приложения Azure я выбрал «Контейнер» в качестве варианта публикации и нажал кнопку Next:Container, как показано ниже.

  • Убедитесь, что указанный вами порт совпадает с портом, который используется в CMD в файле Docker.

Вывод службы приложений Azure:

@Pam Пожалуйста, проверьте, помогло ли вам приведенное выше решение. Дайте мне знать, если я могу чем-то еще помочь.

Aslesha Kantamsetti 05.07.2024 11:41

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