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

Docker部署Django网站无法访问且无Django日志问题求助

问题排查与解决方案

一、解决Django容器无日志输出的问题

  • 先确认Django容器状态:执行docker ps -a,查看容器是否处于Exited状态。如果是,执行docker logs <django_container_id>获取容器退出日志,这是定位启动失败的核心依据。
  • 检查Dockerfile启动命令:确保启动命令绑定了0.0.0.0,正确的命令示例:
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
    
    若未绑定0.0.0.0,容器内服务仅监听本地回环,不仅外部无法访问,也可能导致容器启动异常。
  • 验证容器内项目路径:如果Dockerfile中COPY命令的路径错误,会导致找不到manage.py,进而启动失败。可进入容器检查:docker exec -it <django_container_id> bash,确认项目文件是否在预期路径。

二、解决外部访问超时(ERR_CONNECTION_TIMED_OUT)的问题

  • 检查docker-compose端口映射配置:确保Django服务的ports字段正确映射宿主机与容器端口,示例:
    services:
      django:
        ports:
          - "8000:8000"  # 宿主机端口:容器端口
    
  • 检查服务器防火墙规则:执行ufw status,确认映射的端口(如8000)已被允许。若未开放,执行ufw allow 8000/tcp生效。
  • 检查云服务器安全组:如果你使用的是云服务器(如AWS、阿里云),需在控制台安全组中放行对应端口的入站规则,否则外部流量无法到达服务器。
  • 验证Django的ALLOWED_HOSTS配置:在settings.py中添加服务器公网IP或域名,示例:
    ALLOWED_HOSTS = ['123.xxx.xxx.xxx', 'your-domain.com', '0.0.0.0']
    
    若ALLOWED_HOSTS未包含访问来源,Django会拒绝请求,但此情况通常返回400而非超时,需结合前面的步骤排查。

三、容器网络连通性检查(针对Django连PostgreSQL场景)

  • 若使用docker-compose,默认会创建专属网络,容器间可通过服务名访问(如postgres作为数据库主机)。若单独使用docker run启动Django,需将其加入PostgreSQL所在的网络:
    docker run --network <postgres_network_name> -p 8000:8000 <your-django-image>
    
    可通过docker network ls查看现有网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:32:49