得到"找不到包"试图在docker容器中构建我的应用程序

时间:2014-04-19 14:03:22

标签: go 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

它构建得很好:

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(来自$ GOROOT)       /go/src/github.com/gorilla/feeds(来自$ GOPATH)

这很奇怪,因为“go install”没有安装依赖项,而之前的“go get github.com/gorilla/feeds”完成没有错误。所以我可能有一个路径或环境问题,但所有的例子看起来都像这个。

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

package main

import (
    "net/http"
    "time"

    "github.com/gorilla/feeds"
)

. . .

更新:当我手动执行“go get”然后启动“run”时,它似乎工作。因此,似乎“RUN go get”将我的文件存储在以太而不是主机的卷中。

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”应该检索它的deps。

最后:这有效,但显然不是首选方法:

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

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

1 个答案:

答案 0 :(得分:5)

我使用

解决了类似的问题
go get ./...

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