我是码头工人的新手,并尝试为简单的Go应用程序创建一个docker容器。我正在使用Godep进行依赖管理。
这是我的Dockerfile:
FROM pottava/golang:1.5
RUN go get github.com/tools/godep \
&& rm -rf /go/pkg /go/src
ADD ./ /go
ENV GOPATH /go
RUN godep go build -v -o ./bin/main ./src/main.go
当我尝试构建图像时,出现以下错误:
...
---> 5cb6dd001eb3
Removing intermediate container 15eb0b298adb
Step 5 : ENV GOPATH /go
---> Running in 1c0043c3e963
---> 6cd0498af200
Removing intermediate container 1c0043c3e963
Step 6 : RUN godep go build -v -o ./bin/main ./src/main.go
---> Running in af2386d13c9a
godep: [WARNING]: godep should only be used inside a valid go package directory and
godep: [WARNING]: may not function correctly. You are probably outside of your $GOPATH.
godep: [WARNING]: Current Directory: /go
godep: [WARNING]: $GOPATH: /go
src/main.go:18:2: cannot find package "github.com/Sirupsen/logrus" in any of:
/usr/local/go/src/github.com/Sirupsen/logrus (from $GOROOT)
/go/Godeps/_workspace/src/github.com/Sirupsen/logrus (from $GOPATH)
/go/src/github.com/Sirupsen/logrus
...
答案 0 :(得分:0)
如果设置GOPATH
,则表示您定义了 go workspace
在有效的包中执行godep""意味着执行它:
$GOPATH/src/a/package
确保在现有的go项目中执行godep,克隆在GOPATH/src
。
简单测试:在您的计算机上尝试相同的命令(不是在正在构建的docker镜像中),当它正常工作时,重现Dockerfile中的设置和命令。