Goでアプリケーションを書く場合のDockerfile内ではGOPATHを意識する #golang

golangで書いたアプリケーションをDocker化するときに、Dockerfile内で適当にWORKDIRを選んだらエラーになりました。

Sample repository

https://github.com/m-nakamura145/golang-docker-compose-sample

Dockerfile

最初に何も考えずに以下のように書いたら、コンテナ内でmain package から entity packageが読み込めなくなりました。

WORKDIR /go/src/app
ADD . /go/src/app

これは、 main.goのimportが github.com/m-nakamura145/golang-docker-compose-sample/entity というpathになっており、コンテナ内の$GOPATH(/go) では解決できない場所に実際のファイルが置かれていることが原因でした。

以下のように、$GOPATH を意識して正しいpathでWORKDIRを設定すれば解決しました。

WORKDIR /go/src/github.com/m-nakamura145/golang-docker-compose-sample
ADD . /go/src/github.com/m-nakamura145/golang-docker-compose-sample
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.