为什么Git仓库地址可正常docker build,docker-compose却报错找不到Dockerfile
问题原因
这是Docker Compose V2早期版本的已知解析缺陷:当build字段直接传入带身份认证令牌的HTTPS Git URL时,Compose会错误地将URL中的https://转义为https:/,导致BuildKit无法识别该地址为远程Git仓库,反而将其当做本地文件路径拼接后查找Dockerfile,最终抛出文件不存在的错误。
原生docker build命令没有经过Compose的URL解析逻辑,因此可以正常识别Git地址完成构建,和你本地的Dockerfile、令牌、分支有效性都没有关系。
解决方法
- 升级Docker Compose到2.10.0及以上版本,该版本已经修复了这个Git URL解析问题
- 如果暂时无法升级,将
build字段调整为对象格式,明确指定context属性为Git地址即可规避字符串解析异常:
app: build: context: "https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop"
- 也可以将GitHub认证信息配置到本地Git的凭证管理工具中,去掉URL里的明文令牌直接写仓库地址,同样可以规避解析问题。
内容的提问来源于stack exchange,提问作者Jacob Stein
相关产品推荐
相关产品推荐

