You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python FastAPI+Uvicorn应用容器化部署Azure容器应用无变更显示求助

问题描述

基于Azure相关文档及示例仓库,将Python FastAPI应用容器化并部署至Azure容器应用。本地运行以下Dockerfile正常,但部署后无法看到代码变更,需实现基于该Dockerfile构建镜像并成功部署应用:

FROM python:3.9
#FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 
WORKDIR /cosmosdb-python-fastapi
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "--reload", "main:app","--host","0.0.0.0","--port", "80"]
解决方案

1. 优化Dockerfile配置

  • 统一端口:EXPOSE声明的端口需与启动命令中的端口一致,避免Azure容器应用端口映射混乱
  • 移除开发模式参数:--reload是FastAPI开发热重载参数,生产环境使用会导致不稳定,且可能引发部署异常
  • 添加--no-cache-dir减小镜像体积,避免依赖安装缓存问题

修改后的Dockerfile:

FROM python:3.9
WORKDIR /cosmosdb-python-fastapi
COPY requirements.txt requirements.txt
RUN pip3 install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

2. 强制刷新镜像构建缓存

本地构建镜像时,添加--no-cache参数强制重新构建所有层,避免旧代码被缓存:

docker build --no-cache -t your-image-repo/your-image:v1.0 .

3. 规范镜像版本管理

  • 避免使用latest标签,每次部署使用唯一版本号(如时间戳、Git Commit Hash),确保Azure容器应用识别到镜像更新
  • 在Azure容器应用配置中,将镜像拉取策略设置为Always,强制每次部署拉取最新镜像

4. 验证Azure容器应用端口配置

在Azure门户的容器应用配置页面:

  • 确认“容器”选项卡的“目标端口”设置为80(与Dockerfile端口一致)
  • 确认“Ingress”已启用,外部访问路径配置正确

5. 排查部署日志

若仍无法看到变更,查看容器应用日志定位问题:

  • 通过Azure门户“日志”选项卡查看实时日志
  • 或使用Azure CLI命令:
az containerapp logs show --name your-app-name --resource-group your-resource-group-name

内容的提问来源于stack exchange,提问作者Mohamed Fariz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:40:24