мой файл докера содержит ниже:
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, так какие изменения в коде мне нужно сделать?
Поскольку я новичок в этом, буду благодарен за любую помощь.
Команда python -m streamlit run, которую вы показываете, существенно отличается от Dockerfile CMD. Как вы вызываете эту команду?
@AsleshaKantamsetti, я заменил скриншоты кодом.
@DavidMaze, я заменил скриншоты кодом, а также обновил свой файл докеров. и передать python -m streamlit run в команде запуска в веб-приложении
@Pam Если вы хотите запустить приложение локально с помощью образа docker, запустите docker — p 8501:8000 <yourimageName>:tag
@Pam az acr login -n <имя регистрации контейнера Azure> — это команда для отправки вашего образа в систему регистрации приложений Azure.
@AsleshaKantamsetti, я запускаю это docker run -p 8501:8000 streamlit-meetingsumeriserqa:1.0, но оно не открывается в веб-браузере.
@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`






Выполните следующие действия, чтобы развернуть приложение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.
az acr login --n<AzureContainerRegistryName>.azurecr.io
docker tag <ImageName> <AzureContainerRegistryName>.azurecr.io/<ImageName>:<tag>
docker push <AzureContainerRegistryName>.azurecr.io/<ImageName>:<tag>
Next:Container, как показано ниже.


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

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