亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用內部包構建 Golang 項目

無法使用內部包構建 Golang 項目

Go
狐的傳說 2022-11-08 16:13:23
我正在嘗試構建一個 Golang 項目,其中包含不同級別的包。我在這里上傳了一個示例項目:https ://github.com/David-Lor/archive.org-telegrambot/tree/example-go-dockerfile-not-building文件去.modmodule github.com/David-Lor/go-examplego 1.16require github.com/gammazero/workerpool v1.1.2DockerfileFROM golang:1.17.7WORKDIR /appCOPY ./src/go.mod .COPY ./src/go.sum .RUN go mod downloadCOPY ./src/* ./#RUN ls -lah # files are copied correctly; go.mod and main.go are in current directoryRUN go build -o /tmp/built錯誤當我 docker build 時,我在 go build 命令中收到以下錯誤:Step 7/7 : RUN go build -o /tmp/built ---> Running in 72358fb165c4main.go:8:2: no required module provides package github.com/David-Lor/go-example/internal/foo; to add it:        go get github.com/David-Lor/go-example/internal/foomain.go:9:2: no required module provides package github.com/David-Lor/go-example/internal/foo/bar; to add it:        go get github.com/David-Lor/go-example/internal/foo/barThe command '/bin/sh -c go build -o /tmp/built' returned a non-zero code: 1但是,如果我運行基本 docker 映像并從那里構建或運行應用程序,它可以正常工作(從主機系統也可以正常運行):$ sudo docker run -it --rm -v $(pwd):/data golang:1.17.7root@e468a186536f:/go# cd /data/srcroot@e468a186536f:/data/src# go build -o /tmp/builtgo: downloading github.com/gammazero/workerpool v1.1.2go: downloading github.com/gammazero/deque v0.1.0root@e468a186536f:/data/src# /tmp/builtinternal/foointernal/foo/barroot@e468a186536f:/data/src# go run main.gointernal/foointernal/foo/bar
查看完整描述

1 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

問題出在你的Dockerfile; 操作后COPY ./src/* ./你的鏡像中的目錄結構如下:


ZZ> docker run -it d1fae37bbfb1 /bin/sh

# cd /app

# ls -al

total 2048

drwxr-xr-x 1 root root    4096 Feb 16 19:58 .

drwxr-xr-x 1 root root    4096 Feb 16 19:59 ..

drwxr-xr-x 3 root root    4096 Feb 16 19:52 foo

-rwxr-xr-x 1 root root      97 Feb 16 19:57 go.mod

-rwxr-xr-x 1 root root     352 Feb 16 19:52 go.sum

-rwxr-xr-x 1 root root     295 Feb 16 19:52 main.go

# ls foo

bar  foo.go

所以沒有internal文件夾,這就是構建失敗的原因。


如果您將此行更改為:


COPY src ./


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號