Docker Compose运行正常但浏览器无法访问Django容器服务问题咨询
问题根因
Docker Compose 配置中的启动命令覆盖了 Dockerfile 定义的默认启动逻辑,将 Django 开发服务器绑定到了容器内部的本地回环地址 localhost:8000。该地址仅接收容器内部的请求,宿主机的端口转发规则无法将外部请求转发到这个地址,因此浏览器访问会触发连接重置报错。
单独运行容器时直接使用了 Dockerfile 中绑定 0.0.0.0:8000 的默认启动命令,该配置允许接收所有网卡的请求,所以访问正常。
解决方法
任选以下一种方案修改即可:
- 方案1:修改
docker-compose.yml中的启动命令,调整绑定地址为0.0.0.0:8000,修改后配置如下:
version: "3.9" services: web: build: . command: python3 manage.py runserver 0.0.0.0:8000 ports: - 8000:8000
- 方案2:如果不需要自定义启动逻辑,直接删除
docker-compose.yml中的command字段,自动复用 Dockerfile 中定义的默认启动参数即可。
修改完成后执行 docker-compose up --build -d 重新启动服务,再访问 localhost:8000 即可正常加载页面。
补充说明:日志中提示的主键类型警告不影响服务运行,若要消除警告,可在 Django 项目的
settings.py中添加配置DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'。
内容的提问来源于stack exchange,提问作者senarijit1618
相关产品推荐
相关产品推荐

