2017-10-22 5 views
-1

メインパッケージと認証パッケージを持つgoアプリケーションをビルドしました。認証パッケージはメインファイルにインポートされます。次のようなディレクトリ構造は、Dockerビルドがローカルのパッケージインポートで失敗する

enter image description here

で、次のようにドッキングウィンドウのファイルの内容は、

FROM golang 

COPY ./ /Users/venkat/go/src/github.com/Athavankanapuli/interflow_api/loginservice/app 
WORKDIR /Users/venkat/go/src/github.com/Athavankanapuli/interflow_api/loginservice/app 
RUN go get github.com/go-kit/kit/endpoint 
RUN go get golang.org/x/oauth2 
RUN go get github.com/go-kit/kit/endpoint 
RUN go get gopkg.in/mgo.v2/bson 
RUN go install ./... 
RUN go build 

EXPOSE 8080 
CMD [ "./app" ] 

ドッキングウィンドウが正常にすべての輸入を行いますが、認証パッケージを読み取りに失敗しました。 $ GOPATHを参照/ユーザ/ヴェンカト/行く ターミナルコマンドドッキングウィンドウは、-tインターを構築します。は、次のエラー出力、このエラーを修正し、ローカル認証パッケージがビルドに含まれますにする方法

enter image description here

を与えますか?あるいは、適切なビルドのためのドッカーファイルを書くための他の良い方法がありますか?

ご協力いただければ幸いです。

+0

があなたのビルド/容器内の '$ GOPATH'を設定しました、またはそれだけに設定されています。しかし、代わりに環境変数を設定するので、私は画像が想定GOPATHの値を使用して、代わりにお勧めしますあなたのラップトップ? – BMitch

+0

ENV GOPATHを使用してdockerfileに$ GOPATHを設定しても、ラップトップ –

+0

@BMitchにのみ設定されていますが、fmtなどの標準ライブラリパッケージでインポートエラーが発生します –

答えて

1

コンテナとビルド環境では、ラップトップの環境変数にアクセスできません。 documented way to use the imageは/行く/ srcディレクトリを使用しています。

FROM golang:1.8 

WORKDIR /go/src/app 
COPY . . 

RUN go-wrapper download # "go get -d -v ./..." 
RUN go-wrapper install # "go install -v ./..." 

CMD ["go-wrapper", "run"] # ["app"] 

私は上記があなたのために働くだろうと私の行くが少し錆びですが、すべての最良の選択肢であると考えています。

$GOPATHは、DockerfileにENV GOPATH=/Users/venkat/goと定義できます。

FROM golang:1.9 

COPY . /go/src/github.com/Athavankanapuli/interflow_api/loginservice/app 
WORKDIR /go/src/github.com/Athavankanapuli/interflow_api/loginservice/app 
RUN go get github.com/go-kit/kit/endpoint 
RUN go get golang.org/x/oauth2 
RUN go get github.com/go-kit/kit/endpoint 
RUN go get gopkg.in/mgo.v2/bson 
RUN go install ./... 
RUN go build 

EXPOSE 8080 
CMD [ "./app" ] 
関連する問題