1 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
你不需要將你的 Go 代碼發(fā)布到像 github.com 這樣的服務(wù)上來編譯它。
您需要做的就是確保您要編譯的代碼在您正在編譯它的機(jī)器上。您的go build
命令失敗,因?yàn)殄e(cuò)誤消息中提到的包在機(jī)器上找不到。
以下假設(shè) Go 項(xiàng)目本身是有序的,您可以在本地機(jī)器上編譯它。如果不是這種情況,并且后面的答案不能幫助您解決問題,那么您需要在問題中包含更多信息,例如go.mod
文件、main.go
文件以及user
包的內(nèi)容。
請注意,COPY *.go ./
它不會(huì)遞歸地復(fù)制所有 go 文件,即它不會(huì)復(fù)制目錄中的./user/
文件。
COPY
:
每個(gè)都
<src>
可能包含通配符,并且將使用 Go 的filepath.Match
規(guī)則進(jìn)行匹配。
模式語法是:
pattern:
{ term }
term:
'*' matches any sequence of non-Separator characters
'?' matches any single non-Separator character
'[' [ '^' ] { character-range } ']'
character class (must be non-empty)
c matches character c (c != '*', '?', '\\', '[')
'\\' c matches character c
character-range:
c matches character c (c != '\\', '-', ']')
'\\' c matches character c
lo '-' hi matches character c for lo <= c <= hi
請注意,該'*'術(shù)語匹配任何非分隔符字符序列,這意味著由于分隔符*.go而不會(huì)匹配。foo/bar.go/
在您的 中包含以下內(nèi)容就足夠了Dockerfile:
FROM golang:1.17-alpine
WORKDIR /app
COPY . ./
RUN go build -o /api
CMD [ "/api" ]
但是,如果您想對(duì)您復(fù)制的文件有選擇性,那么您可以這樣做:
COPY go.mod ./
COPY go.sum ./
COPY user/ ./user/
COPY *.go ./
- 1 回答
- 0 關(guān)注
- 91 瀏覽
添加回答
舉報(bào)