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

部署到Azure容器实例的Django Web应用无法访问,求解决方案

Django部署到Azure容器实例无法访问的排查与解决

核心问题分析

从操作步骤和配置来看,主要存在以下关键问题:

1. 端口映射不匹配

创建Azure容器实例时指定开放80、443端口,但Docker容器内的Django服务运行在8000端口,两者未做映射,外部请求无法到达容器内的服务。

2. Django的ALLOWED_HOSTS未配置

Django默认仅允许本地地址访问,未添加Azure容器实例的公网IP或DNS域名,会直接拒绝外部请求。

3. 容器运行状态未验证

未确认容器是否正常启动、服务是否在容器内正常运行。


分步解决方法

步骤1:修正端口映射配置

重新创建容器实例时,将容器内部的8000端口映射到Azure的公网端口(如80),使用--ip-port参数指定映射关系:

az container create -g xxtestrg --name test-ci \
--image xxtestcr.azurecr.io/demoproject:v1.0 \
--ip-port 80:8000 \
--cpu 1 --memory 1.5 \
--dns-name-label xxtest-demoproject

说明:80:8000表示将Azure容器实例的80端口映射到容器内部的8000端口,外部通过80端口访问即可。

步骤2:配置Django的ALLOWED_HOSTS

打开demoproject/settings.py,修改ALLOWED_HOSTS配置,添加Azure容器实例的DNS名称和公网IP:

ALLOWED_HOSTS = [
    'xxtest-demoproject.australiaeast.azurecontainer.io',
    '4.147.67.11',
    '0.0.0.0'  # 仅测试环境使用,生产环境需指定具体域名
]

修改后重新构建镜像并推送到ACR:

docker build -t demoproject:v1.1 .
docker tag demoproject:v1.1 xxtestcr.azurecr.io/demoproject:v1.1
docker push xxtestcr.azurecr.io/demoproject:v1.1

步骤3:验证容器运行状态

创建容器后,通过以下命令检查状态和日志,确认服务启动情况:

# 查看容器运行状态
az container show -g xxtestrg -n test-ci --query "containers[0].instanceView.currentState"

# 查看容器日志,检查Django服务输出
az container logs -g xxtestrg -n test-ci

若日志中出现Starting development server at http://0.0.0.0:8000/,说明容器内服务正常运行。

步骤4:测试访问

完成配置后,通过以下地址访问:

  • http://xxtest-demoproject.australiaeast.azurecontainer.io
  • http://4.147.67.11

内容的提问来源于stack exchange,提问作者J.W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:55:16