得到“无法find包”试图build立我的应用程序在docker集装箱

这是我的Dockerfile。

FROM ubuntu MAINTAINER me <my@email.com> RUN apt-get update && apt-get install -y \ build-essential \ curl \ git \ make # Get and compile go RUN curl -s https://go.googlecode.com/files/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1 ENV PATH /usr/local/go/bin:/go/bin:$PATH ENV GOPATH /go RUN go get github.com/gorilla/feeds WORKDIR /go CMD go version && go install feed && feed 

它build立得很好:

 sudo docker build -t ubuntu-go . 

但是当我运行它时,我得到一个包错误:

 sudo docker run -v /home/rbucker/go:/go --name go ubuntu-go 

该错误看起来像:

src / feed / feed.go:7:2:在以下任一位置找不到软件包“github.com/gorilla/feeds”:/usr/local/go/src/pkg/github.com/gorilla/feeds(from $ GOROOT )/go/src/github.com/gorilla/feeds(来自$ GOPATH)

这很奇怪,因为“去安装”不安装依赖关系,而前面的“去github.com/gorilla/feeds”完成没有错误。 所以大概我有一个path或环境问题,但所有的例子看起来就像这个。

PS:我的代码位于/ go / src / feed(feed.go)

 package main import ( "net/http" "time" "github.com/gorilla/feeds" ) . . . 

更新:当我手动执行“去获取”,然后启动“运行”似乎工作。 所以看起来,“运行得到”是存储我的文件在以太而不是我的主机的音量。

 sudo docker run -v /home/rbucker/go:/go --name go ubuntu-go /bin/bash 

然后

 sudo docker run -v /home/rbucker/go:/go --name go ubuntu-go 

(这些文件位于我的〜/ go / src / githum.com和〜/ go / pkg文件夹中。)

更新:我发现在BUILD步骤中,/ go卷尚未附加到泊坞窗图像。 所以它基本上被分配到零。 但是在运行过程中,“get install”应该已经找回了它的代价。

最后:这个工程,但显然不是首选的方法:

 CMD go get github.com/gorilla/feeds && go version && go install feed && feed 

注意我在CMD中执行了“go get”而不是RUN。

我通过使用解决了类似的东西

 go get ./... 

来源: https : //coderwall.com/p/arxtja/install-all-go-project-dependencies-in-one-command