如何在Azure Web App部署Streamlit应用?含端口及ACR登录问题
部署Streamlit到Azure Web App的问题解决
1. Dockerfile修改(端口与启动命令配置)
你的Dockerfile缺少启动命令,导致Streamlit默认使用8501端口运行,需要补充指定8000端口并配置CORS的启动命令,修改后的Dockerfile如下:
FROM python:3.10.11 WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 8000 # 指定启动命令:绑定8000端口、允许外部访问、关闭CORS限制 CMD ["python", "-m", "streamlit", "run", "Login.py", "--server.port", "8000", "--server.address", "0.0.0.0", "--server.enableCORS=false", "--server.enableXsrfProtection=false"]
2. 本地容器访问问题
之前运行容器时用了docker run -p 8000:8000,但因Dockerfile未指定启动命令,Streamlit实际跑在8501端口,导致端口映射不匹配。修改Dockerfile后,重新构建并运行容器:
docker build -t streamlit-meetingsumeriserqa:1.0 . docker run -p 8000:8000 streamlit-meetingsumeriserqa:1.0
此时访问http://localhost:8000即可打开应用。
3. Azure容器注册表(ACR)登录超时问题
超时通常由网络或凭证问题导致,可尝试以下解决步骤:
- 切换到稳定的网络环境(如关闭代理),确保能正常访问Azure服务
- 登录Azure门户,进入目标ACR的「设置」→「访问密钥」,复制正确的用户名和密码(避免手动输入错误)
- 使用Azure CLI登录ACR(更稳定,无需手动输入密码):
# 先登录Azure账号(首次使用需执行) az login # 登录ACR az acr login --name meetingsummeriser
4. Azure Web App部署的额外配置
部署到Azure Web App时,需确认以下配置:
- 选择「容器」部署方式,指定ACR中的镜像地址
- 在Web App的「配置」→「常规设置」中,无需额外填写启动命令(Dockerfile已包含CMD指令)
- 若端口存在冲突,在「配置」→「应用程序设置」中添加
WEBSITES_PORT变量,值设为8000,确保Azure Web App转发到容器的8000端口
内容的提问来源于stack exchange,提问作者Pmd
相关产品推荐
相关产品推荐

