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

Docker容器运行Django应用报错:无法分配IP地址求助

问题分析与解决

核心问题1:错误的绑定IP

你最初在Dockerfile里指定的8.8.0.0是Google的公共DNS服务器IP,容器内部的网络接口根本无法绑定这个外部公网IP,这直接触发了Error: That IP address can't be assigned to.的报错。

核心问题2:修改Dockerfile后未重新构建镜像

你已经将启动命令改为0.0.0.0:8000,但报错日志里仍显示Starting development server at http://8.8.0.0:8000/,说明Docker仍在使用之前构建的旧镜像,没有应用你的修改。

解决步骤

1. 确认Dockerfile启动命令正确

确保Dockerfile最后一行配置为:

CMD python manage.py runserver 0.0.0.0:8000

0.0.0.0表示绑定容器内所有可用网络接口,这样Docker的端口映射才能正常生效,外部可通过宿主机8000端口访问应用。

2. 强制重新构建镜像并启动服务

执行以下命令,让Docker重新构建镜像并启动服务:

docker-compose up --build

--build参数会强制Docker重新读取Dockerfile的修改,构建新镜像后再启动容器。

3. 检查Django的ALLOWED_HOSTS配置

即使容器启动成功,若Django项目settings.py中的ALLOWED_HOSTS未配置正确,仍会出现400错误。开发环境可暂时设置为允许所有主机:

ALLOWED_HOSTS = ['*']

生产环境需替换为具体的域名或IP地址。

4. 额外注意:数据库就绪问题

depends_on仅保证db服务启动,但不确保MySQL已完全就绪接受连接。若Django启动时数据库未准备好,会触发连接失败错误。可通过添加等待脚本或配置docker-compose的healthcheck,确保数据库就绪后再启动Django服务。

验证

重新启动后,若日志显示:

Starting development server at http://0.0.0.0:8000/

即可通过http://127.0.0.1:8000/正常访问你的Django应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:01:39