Ubuntu22.04下Docker Compose部署Django时BuildKit启动报错
解决Docker Compose启动BuildKit失败的
http: invalid Host header错误 以下是针对Ubuntu 22.04.3环境的可行排查与修复步骤:
1. 显式配置Docker Daemon的Host地址
BuildKit启动失败常因Docker daemon的Host配置模糊导致,修改/etc/docker/daemon.json文件:
{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }
保存后重启Docker服务:
sudo systemctl restart docker
2. 升级Docker Compose至最新稳定版
旧版本Docker Compose与BuildKit存在兼容性bug,执行以下命令升级:
sudo rm -f /usr/local/bin/docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
验证升级结果:
docker-compose --version
3. 彻底禁用BuildKit(避免残留配置干扰)
即使之前尝试禁用,可能存在环境变量未清除的情况,执行启动命令前先重置相关变量:
export DOCKER_BUILDKIT=0 export COMPOSE_DOCKER_CLI_BUILD=0 docker-compose -f ./docker-compose.yml up
也可以直接在docker-compose.yml中全局禁用BuildKit:
version: '3.8' x-buildkit: enabled: false services: # 你的Django、MySQL、Django Q服务配置...
4. 排查网络配置异常
- 确保
docker-compose.yml中使用标准bridge网络,避免自定义网络的Host解析问题:
version: '3.8' networks: default: driver: bridge services: # 你的服务配置...
- 检查Dockerfile中是否包含涉及远程资源的指令(如
ADD https://xxx),确认URL的Host格式合法,无特殊字符。
5. 验证系统Hosts与DNS配置
检查本地/etc/hosts文件是否存在异常映射:
cat /etc/hosts
同时验证DNS解析正常:
ping docker.io
如果以上步骤仍未解决问题,可提供docker info的完整输出、Dockerfile及docker-compose.yml的具体内容,以便进一步定位问题。
内容的提问来源于stack exchange,提问作者Jingda
相关产品推荐
相关产品推荐

