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

使用docker compose run映射端口,无法访问容器内Django服务的问题

解决Docker Compose Run启动Django后无法访问localhost:8000的问题

核心问题说明

  1. docker compose run 默认不会启用docker-compose.yml中定义的端口映射,必须显式添加--service-ports参数才能加载端口配置
  2. Django的runserver命令默认仅绑定容器内部的127.0.0.1,这个地址无法被宿主机访问,需要改为绑定0.0.0.0

正确操作示例

1. 进入容器的正确命令

执行以下命令进入指定项目的容器:

docker compose -p dev run --service-ports --entrypoint /usr/bin/fish shop-backend

--service-ports参数会自动应用docker-compose.yml里的ports映射规则,将宿主机8000端口关联到容器8000端口。

2. 容器内启动Django服务的正确命令

进入容器后,执行启动命令时指定绑定所有网络接口:

python3 src/manage.py runserver 0.0.0.0:8000

此命令让Django监听容器内所有可访问的网络接口,宿主机就能通过localhost:8000正常访问服务。

额外验证点

如果仍无法访问,可检查以下内容:

  • 宿主机8000端口是否被占用:Linux/macOS用lsof -i :8000,Windows用netstat -ano | findstr ":8000"查看
  • 容器运行状态:执行docker compose -p dev ps确认shop-backend容器处于运行状态
  • 防火墙拦截:临时关闭宿主机防火墙测试是否能访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:58:10