簡體   English   中英

嘗試在docker容器中構建我的應用程序“找不到包”

[英]getting “cannot find package” trying to build my application in a docker container

這是我的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。

我通過使用解決了類似的問題

go get ./...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM