第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Dockerizing Go API 在不設(shè)置 git 項(xiàng)目 repo 的情況下無法工作

Dockerizing Go API 在不設(shè)置 git 項(xiàng)目 repo 的情況下無法工作

Go
GCT1015 2022-10-10 19:55:53
我有一個(gè)非常簡單的項(xiàng)目 - 一個(gè)具有以下目錄結(jié)構(gòu)的 Go API├── Dockerfile├── go.mod├── go.sum├── main.go└── user    ├── repository.go    └── user.go我的 Dockerfile 看起來像這樣FROM golang:1.17-alpineWORKDIR /appCOPY go.mod ./COPY go.sum ./RUN go mod downloadCOPY *.go ./RUN go build -o /apiCMD [ "/api" ]我不斷收到這個(gè)錯(cuò)誤:[7/7] RUN go build -o /api: #11 0.462 main.go:4:2: 包 api/user 不在 GOROOT (/usr/local/go/src/api/user)在閱讀了一下之后,看起來我可能需要設(shè)置一個(gè) github 存儲(chǔ)庫并從 git 中提取代碼?我認(rèn)為這真的很瘋狂,因?yàn)榇a就在 Docker 映像中。如何在不設(shè)置 git repo 的情況下構(gòu)建/Dockerize 這個(gè) Go 項(xiàng)目github.com/alex/someproject?問是因?yàn)槲也幌雽⑵浒l(fā)布到 github 上——這在本地應(yīng)該很簡單。
查看完整描述

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)行匹配。

filepath.Match

模式語法是:

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 ./


查看完整回答
反對(duì) 回復(fù) 2022-10-10
  • 1 回答
  • 0 關(guān)注
  • 91 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)