[英]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.