簡體   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