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

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

在 Docker 中,無法使用“go get”cd 進入安裝目錄嗎?

在 Docker 中,無法使用“go get”cd 進入安裝目錄嗎?

Go
波斯汪 2023-07-31 14:51:33
我正在嘗試構建一個 Docker 容器,并使用go get命令和cds 到結果目錄中,以便執行一些后續命令(即make deps、make build和COPY將相關的生成二進制文件放入容器的PATH) 中。到目前為止我已經嘗試過這個Dockerfile:FROM golang:latestENV GO111MODULE onRUN ["go", "get", "github.com/micromdm/scep"]RUN cd $GOPATH/src/github.com/micromdm/scep但是,如果我嘗試運行它,我會收到以下錯誤:> docker build . --tag loadtestSending build context to Docker daemon? 4.608kBStep 1/4 : FROM golang:latest?---> 52b59e9ead8eStep 2/4 : ENV GO111MODULE on?---> Using cache?---> 28335bf0142bStep 3/4 : RUN ["go", "get", "github.com/micromdm/scep"]?---> Using cache?---> 86760bf0c490Step 4/4 : RUN cd $GOPATH/src/github.com/micromdm/scep?---> Running in b86fc3ab0ab8/bin/sh: 1: cd: can't cd to /go/src/github.com/micromdm/scepThe command '/bin/sh -c cd $GOPATH/src/github.com/micromdm/scep' returned a non-zero code: 2如果我嘗試該命令而不將GO111MODULE環境變量設置為on,我會收到他的錯誤:> docker build . --tag loadtestSending build context to Docker daemon? 4.608kBStep 1/3 : FROM golang:latest?---> 52b59e9ead8eStep 2/3 : RUN ["go", "get", "github.com/micromdm/scep"]?---> Running in 8cb54311a416package github.com/micromdm/scep: no Go files in /go/src/github.com/micromdm/scepThe command 'go get github.com/micromdm/scep' returned a non-zero code: 1在https://github.com/ponzu-cms/ponzu/issues/204之后,我還嘗試...在最后運行它,FROM golang:latestRUN ["go", "get", "github.com/micromdm/scep/..."]RUN cd $GOPATH/src/github.com/micromdm/scep \但這會導致> docker build . --tag loadtestSending build context to Docker daemon? 4.608kBStep 1/3 : FROM golang:latest?---> 52b59e9ead8eStep 2/3 : RUN ["go", "get", "github.com/micromdm/scep/..."]?---> Running in 961bae3bb455# github.com/micromdm/scep/scep關于如何實現下載包并將其cd放入結果目錄的任何想法?
查看完整描述

3 回答

?
慕桂英3389331

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

首先,在 docker 中,您正在構建一個容器,因此嘗試 cd 到您電腦中的目錄是不可能的。使用 WORKDIR 命令,也建議將 git clone 到存儲庫中并創建 Dockerfile,然后將其中的所有內容復制到 docker 內的目錄中,例如:


COPY . /app

WORKDIR /app/where_you_want_to_cd

RUN whatever_you_want_to_run


查看完整回答
反對 回復 2023-07-31
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

你可以把這個路徑設置為你的WORKDIR,后續的命令就很簡單了。

從docker 構建器參考 來看,每個 RUN 命令都是獨立運行的。所以這樣做RUN cd對下一個RUN命令沒有任何影響。

以下 Dockerfile 有效:

FROM golang:latest


ENV GO111MODULE on

RUN go get github.com/micromdm/scep

WORKDIR /go/src/github.com/micromdm/scep

您需要在這里,GO111MODULE因為該模塊中go.mod沒有定義 go 版本,因此您需要自己激活它。


查看完整回答
反對 回復 2023-07-31
?
蝴蝶刀刀

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

事實證明,生成的代碼不是位于 中/go/src,而是位于 中/go/pkg。



查看完整回答
反對 回復 2023-07-31
  • 3 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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