我正在尝试go build hello.go在 dockerfile 中运行,因为FROM golangCOPY hello.go /go/src/hello.goRUN cd src/RUN go build hello.goRUN ./hello一切顺利go build,直到命令出现以下错误消息:stat hello.go: no such file or directoryThe command '/bin/sh -c go build hello.go' returned a non-zero code: 1但是,如果我在 dockerfile 上注释最后两个命令并运行创建的图像,我可以go build毫无问题地运行该命令。为什么会这样?
1 回答
Qyouu
TA贡献1786条经验 获得超11个赞
每个 RUN 命令都会启动一个具有干净环境和新默认工作目录的新 shell。特别是,RUN cd ...
作为一个孤立的步骤什么都不做。
如果您确实需要更改 Dockerfile 中的目录,请将这两个步骤合二为一,或者使用指令WORKDIR
使更改更加全局化。
在 Go 存储库的特定情况下,由于有一个至少非常强烈鼓励的标准目录布局,我会使用它:
FROM golang
WORKDIR /go/src/github.com/me/myprogram
COPY . ./
RUN go install .
CMD ["/go/bin/myprogram"]
(一般来说,Go 处理整个目录或相关文件的“包”,而不一定是单个.go文件。)
- 1 回答
- 0 关注
- 218 浏览
添加回答
举报
0/150
提交
取消