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

Dockerfile用docker build构建失败但docker-compose可正常运行

问题原因与解决方案

核心问题

你使用的构建命令 docker build - < Dockerfile 没有传递构建上下文。

当用管道方式传递Dockerfile时,Docker守护进程只能获取到Dockerfile本身,无法访问当前目录下的go.mod、go.sum等本地文件,因此COPY步骤会失败。而docker-compose默认会将当前目录作为构建上下文传递给Docker,所以能正常找到这些文件完成构建。

解决方案

方法1:使用标准构建命令(推荐)

直接在项目根目录执行:

docker build .

该命令会自动将当前目录作为构建上下文,Docker就能访问到go.mod、go.sum以及其他需要复制的文件。

方法2(可选):带上下文的管道构建(不推荐)

如果一定要用管道方式,需要先将当前目录打包后传递给Docker:

tar -c . | docker build -

不过这种写法冗余,不如方法1简洁直观。

额外优化建议

你的Dockerfile中COPY go.mod go.sum bin/这一行,因已设置WORKDIR /bin,可以简化为:

COPY go.mod go.sum ./

这样更清晰,避免路径混淆。

内容的提问来源于stack exchange,提问作者R. Barrett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:05:32