使用docker build構建golang程式時解決golang.org/x包不能下載的問題
阿新 • • 發佈:2018-12-15
在構建golang docker映象的時候,解決依賴時,發現golang.org/x包是不能下載的。
Dockerfile.build內容如下:
FROM golang:1.10-alpine WORKDIR xxx RUN apk add --update git RUN go get -u github.com/golang/dep/cmd/dep COPY Gopkg.lock Gopkg.toml ./ RUN dep ensure --vendor-only -v COPY . ./ RUN \ CGO_ENABLED=0 go build -v -o xxx . CMD ["/bin/sh"]
採用dep解決依賴
但是在docker中就算代理了,也不能進行ping,因為代理不會代理icmp,只會代理tcp/udp,由於dep會嘗試ping,所以就安裝不了一些包了。
解決方案:
1.在本地先解決依賴,然後上傳到程式碼庫。
本地先進行代理,然後進行
dep ensure --vendor-only -v
2.最後將Dockerfile.build修改為以下內容:
FROM golang:1.10-alpine WORKDIR /go/src/github.com/arachnys/athenapdf/weaver COPY . ./ RUN \ CGO_ENABLED=0 go build -v -o weaver . CMD ["/bin/sh"]
3.然後支援docker build時發現在build的說找不到vendor中的包。
但是明明有進行copy到docker中呀,怎麼就找不到呢
COPY . ./
進行除錯,RUN ls .
發現輸出結果真的沒有vendor目錄。
最後同事說是.dockerignore中對vendor進行了忽略。
最後將.dockerignore中的vendor目錄刪除掉,成功build.