1. 程式人生 > >使用docker build構建golang程式時解決golang.org/x包不能下載的問題

使用docker build構建golang程式時解決golang.org/x包不能下載的問題

在構建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.