[Golang]$GOPATH/go.mod exists but should notを回避する

go.modを使ったDockerfileのビルド時に発生した「$GOPATH/go.mod exists but should not」エラーの回避策をメモしておきます。

事象

以下のDockerfileをビルドしたところ、「$GOPATH/go.mod exists but should not」エラーが発生しました。

go.modは、Go言語の依存パッケージ管理モジュールです。

pythonの「requirements.txt」、JavaScriptの「package.json」がイメージに近いでしょうか。

go.modファイルの中身は、以下のようになっています。

上記は、私のgolangプログラム内で使っているサードパーティモジュールのバージョンが記述されています。

go.modファイルに対して、「RUN go mod download」を実行すると依存パッケージをダウンロードしてくれます。

しかし、エラーメッセージの「$GOPATH/go.mod exists but should not」から推測するに、GOPATHが設定されている場合は、go.modが使用できないようですね。

回避策

GOPATHを設定している場合はgo modが使えないので、以下のようにGOPATHをクリアしてみました。

無事にビルドが成功しました!

おわりに

GOPATHをクリアすることで無事にビルドすることが可能になりましたが、GOPATHが設定されているとビルドに失敗する理由についてはまだ理解できてません^^;

この辺りの勉強を深掘りしていきたいと思います。

それでは、また!

コメントを残す