我正在嘗試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 關注
- 262 瀏覽
添加回答
舉報
0/150
提交
取消