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

Docker化Django应用无法通过指定端口访问的排查求助

Django容器无法通过端口9000访问的排查步骤

按以下顺序逐步排查问题:

1. 确认容器运行状态与日志

  • 查看当前运行的容器,检查my-django-container状态:
    docker ps
    
    若状态显示Exited或Restarting,说明容器启动失败。
  • 查看容器日志定位报错原因:
    docker logs my-django-container
    
    重点排查Django启动相关的错误(如依赖缺失、端口冲突、配置错误)。

2. 验证容器内部服务可用性

进入容器内部,直接访问服务确认Django本身是否正常运行:

docker exec -it my-django-container bash
curl localhost:9000

若能返回Django页面内容(如默认欢迎页、API响应),说明容器内服务正常;若无响应,问题出在Django应用本身。

3. 检查宿主机端口映射是否生效

确认宿主机9000端口是否被Docker正确监听:

# 用netstat(部分系统需先安装)
netstat -tulpn | grep 9000
# 或用ss(更通用)
ss -tulpn | grep 9000

正常情况会看到docker-proxy进程监听0.0.0.0:9000。若无结果,说明端口映射未生效——可能是容器启动失败,或宿主机9000端口被其他进程占用(可通过lsof -i :9000查看占用进程)。

4. 确认防火墙与云安全组规则

  • 检查UFW防火墙规则是否生效:
    sudo ufw status
    
    确保9000/tcp规则处于ALLOW状态。
  • 关键注意:若服务器为云服务商提供(如AWS、阿里云等),需登录云控制台检查安全组入站规则,确认允许9000端口的TCP流量。云安全组优先级高于本地防火墙,是新手常忽略的点。

5. 检查Django的ALLOWED_HOSTS配置

Django会拒绝不在ALLOWED_HOSTS列表中的请求,打开项目settings.py:

# 测试环境可临时设为允许所有,生产环境需指定服务器IP
ALLOWED_HOSTS = ['*']

修改后需重新构建Docker镜像并部署,否则配置不生效。

6. 确认Jenkins执行权限与命令结果

  • 在Jenkins Pipeline中添加sh 'docker ps'步骤,查看构建日志是否能正常返回容器列表,避免因Jenkins用户无Docker权限导致容器未正确启动。
  • 检查Jenkins构建日志,确认docker run命令是否执行成功,有无被忽略的报错信息。

内容的提问来源于stack exchange,提问作者Atit Bimali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:42:28