Azure多容器Web App部署Django应用启动失败问题求助
解决步骤
1. 修正docker-compose配置
Azure多容器Web App的编排逻辑和原生docker-compose存在差异,需要先修改两个不符合平台规则的配置:
- 删除
container_name字段:平台会自动为容器添加全局唯一前缀,手动指定容器名会导致编排流程异常 - 修改端口映射规则:平台会自动覆盖端口映射的左侧宿主端口,仅需要填写容器内实际监听的端口即可
修改后的配置参考:
version: "3.3" services: backend: image: companyregistry.azurecr.io/company:latest ports: - "8000"
2. 调整平台识别配置
在Azure Web App的「配置」-「应用程序设置」中添加两个参数:
WEBSITES_PORT=8000:明确告知平台你的容器内服务监听的端口为8000,平台默认只会识别80、8080两个默认端口,非标准端口必须主动声明WEBSITES_CONTAINER_START_TIME_LIMIT=600:将启动检测超时时间从默认的230秒延长到600秒,避免服务启动慢被误判为启动失败
3. 可选:适配健康检测规则
如果你的Django服务根路径/未配置路由、默认返回404,需要额外添加WEBSITES_HEALTH_CHECK_PATH参数,指定一个可以正常返回200状态码的路由(比如/admin或者自定义的健康检测接口),避免平台健康检测失败关停服务。
根因说明
你遇到的情况是Azure多容器Web App预览版的规则差异导致的:单容器场景下端口识别优先级更高,所以配置WEBSITES_PORT就可以正常运行;但多容器场景下需要同时适配docker-compose的端口规则和平台的健康检测逻辑,没有主动声明监听端口时,平台会默认检测80端口的连通性,而你的服务跑在8000端口,就会出现服务内部启动正常但平台检测不到、直接关停的情况。
内容的提问来源于stack exchange,提问作者allinws
相关产品推荐
相关产品推荐

