繁体   English   中英

运行在dockerfile中构建main.go

[英]RUN go build main.go in dockerfile

我正在尝试在go build hello.go运行go build hello.go

FROM golang

COPY hello.go /go/src/hello.go

RUN cd src/

RUN go build hello.go

RUN ./hello

一切顺利,直到执行go build命令,然后出现以下错误消息:

stat hello.go: no such file or directory
The command '/bin/sh -c go build hello.go' returned a non-zero code: 1

但是,如果我在dockerfile上注释了最后两个命令并运行创建的映像,则可以毫无问题地运行go build命令。

为什么会这样呢?

每个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文件。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM