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

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

Docker Go 映像:啟動容器進程導致:exec:“app”:$PATH 中找不到可執行文件:

Docker Go 映像:啟動容器進程導致:exec:“app”:$PATH 中找不到可執行文件:

Go
MMMHUHU 2022-10-17 15:52:36
我一直在閱讀很多關于不同語言的類似問題,但沒有一個是 Go。我剛剛使用我在官方 Docker 中心頁面上遵循的說明創建了一個 Dockerfile :FROM golang:1.17.3WORKDIR /go/src/appCOPY . .RUN go get -d -v ./...RUN go install -v ./...CMD ["app"]這是我的文件夾結構:users-service |-> .gitignore |-> Dockerfile |-> go.mod |-> main.go |-> README.md如果有人需要查看一些代碼,這就是我的main.go樣子:package mainimport "fmt"func main() {    fmt.Println("Hello, World!")}我跑了docker build -t users-service .:$ docker build -t users-service .[+] Building 5.5s (11/11) FINISHED => [internal] load build definition from Dockerfile                                                                                                               0.1s => => transferring dockerfile: 154B                                                                                                                               0.1s  => [internal] load .dockerignore                                                                                                                                  0.0s  => => transferring context: 2B                                                                                                                                    0.0s  => [internal] load metadata for docker.io/library/golang:1.17.3                                                                                                   3.3s => [auth] library/golang:pull token for registry-1.docker.io                                                                                                      0.0sUse 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them然后我跑了docker run users-service,但我得到了那個錯誤:$ docker 運行用戶服務docker:來自守護進程的錯誤響應:OCI 運行時創建失?。篶ontainer_linux.go:380:啟動容器進程導致:exec:“app”:$PATH 中找不到可執行文件:未知。我記得我GOPATH在 Windows 上的 Visual Studio Code 中遇到了一些環境變量問題,也許是相關的……有什么建議嗎?
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

官方 Docker 文檔有關于構建 Go 鏡像的有用說明:https ://docs.docker.com/language/golang/build-images/


總之,您需要構建您的 Go 二進制文件,并且需要適當地配置 CMD,例如:

FROM golang:1.17.3


WORKDIR /app


COPY main.go .

COPY go.mod ./


RUN go build -o /my-go-app


CMD ["/my-go-app"]

構建容器:


$ docker build -t users-service .

運行 docker 容器:


$ docker run --rm -it users-service

Hello, World!


查看完整回答
反對 回復 2022-10-17
?
DIEA

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

您的“app”可執行二進制文件應該可以在您$PATH的全局調用中使用,而無需任何路徑前綴。否則,您必須提供可執行文件的完整路徑,例如CMD ["/my/app"]

另外,我建議使用ENTRYPOINT指令。ENTRYPOINT指示可執行文件的直接路徑,而CMD指示提供給ENTRYPOINT.

使用組合指令使您的圖像層最小化,與使用多個sRUN相比,您的整體圖像大小變得更小一些。RUN


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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