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

Docker化Django应用部署Azure App Service失败求助

问题排查与解决:Docker化Django应用部署Azure App Service失败

核心问题定位

从日志能看到两个关键矛盾信息:

  • Django应用实际启动在http://0.0.0.0:8000/
  • Azure报错:Container myapp_0_aaaaa didn't respond to HTTP pings on port: 3000

问题根源是:你的Dockerfile声明暴露3000端口,但容器内的Django服务实际运行在8000端口,Azure App Service会默认检测容器EXPOSE的端口是否能正常响应,端口不匹配导致启动失败。

解决步骤

1. 修正Dockerfile的端口声明

修改Dockerfile中的EXPOSE指令,改为Django实际运行的8000端口:

FROM python:3.8.3-slim

ENV PYTHONUNBUFFERED=1

WORKDIR /app

RUN apk update && apk add --no-cache gcc musl-dev postgresql-dev python3-dev libffi-dev freetype-dev libxml2-dev libxslt-dev build-base && pip install --upgrade pip psycopg2-binary

COPY ./requirements.txt ./

RUN pip install -r requirements.txt

COPY ./ ./

# 修正为实际运行的端口
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

2. 重新构建并推送镜像

执行以下命令重新构建镜像,推送到Azure容器注册表:

docker build -t myapp.azurecr.io/myapp:latest .
docker push myapp.azurecr.io/myapp:latest

3. 确认Azure App Service端口配置(可选)

进入Azure App Service后台:

  • 导航到「配置」>「常规设置」
  • 确保「端口」字段设置为8000,与容器内部端口一致

额外建议

  • 生产环境优化:当前使用的runserver是Django开发服务器,仅适合开发场景。生产环境建议改用Gunicorn作为应用服务器,搭配Nginx反向代理,提升性能和安全性。
  • 网络检查:确认Azure App Service的网络规则(如防火墙、VNet集成)未阻止8000端口的入站请求。

内容的提问来源于stack exchange,提问作者Carlos S. C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:40:26