Docker部署Django项目无法访问首页问题求助
Django容器无法通过浏览器访问的排查与解决
核心问题定位
容器内Django默认绑定127.0.0.1,仅容器内部可访问,宿主机无法通过该地址连接。以下是分步解决步骤:
1. 修改Django服务绑定地址
运行服务器时必须指定绑定0.0.0.0,让容器监听所有网卡:
docker-compose run app sh -c "python manage.py runserver 0.0.0.0:8000"
或直接在docker-compose.yml的app服务中配置启动命令:
services: app: # 其他配置项 command: python manage.py runserver 0.0.0.0:8000
2. 确认端口映射配置
检查docker-compose.yml中是否配置了端口映射,将容器8000端口映射到宿主机:
services: app: # 其他配置项 ports: - "8000:8000" # 格式:宿主机端口:容器端口
3. 修正Django的ALLOWED_HOSTS
在settings.py中添加允许访问的主机地址,开发环境可直接用通配符:
ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost'] # 开发环境简化配置:ALLOWED_HOSTS = ['*']
4. 验证容器运行状态
执行docker ps查看容器状态:
- 确认
app服务状态为Up - 确认端口映射显示为
0.0.0.0:8000->8000/tcp或类似格式
5. 排查网络连通性
- 进入容器内部测试服务可用性:
docker exec -it <你的容器ID> sh curl http://127.0.0.1:8000
若返回页面内容,说明容器内服务正常,问题出在端口映射或宿主机网络;若失败,检查Django服务启动日志。
- 宿主机端测试:执行
curl http://127.0.0.1:8000,若失败检查防火墙是否拦截8000端口。
内容的提问来源于stack exchange,提问作者Matheus Tenório
相关产品推荐
相关产品推荐

