Go PR

【Go言語(Golang)】WSL2とDockerで最高のGo開発環境をつくる

WSL2-Docker-VSCode-Golang
記事内に商品プロモーションを含む場合があります

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

WSL2 + Docker + VS Code の Remote – Containers のGo開発環境が最高だったので、構築方法と実践チュートリアルを紹介します。

はじめに

以下の記事の前半で各ツールのインストール方法は紹介済みなので、本記事では割愛します。

WSL2 + VSCode + DockerでPython開発環境をつくる
WSL2とDockerとVSCodeのRemote Containersで最高の開発環境をつくるこんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。 WSL2 + Docker + VS Code の Re...

この記事の後半でPython用のDockerfileの書き方から機械学習アプリ開発までを紹介しました。

本記事ではGo用のDockerfileの書き方からWebアプリ開発までを紹介します。

実践 Dockerチュートリアル -Goプログラミングのサンドボックス作成-

アプリ開発をするとき、気軽に使い捨てできる開発環境(サンドボックス)がほしいケースがよくあります。そんな使い捨て環境をつくるなら Docker が最高です。

Windowsの適当な場所に下記構成のプロジェクトフォルダ:docker-go を作成します。

EchoでつくるWebアプリ main.go

Go用のWebフレームワーク:Echoを活用したWebアプリ(main.go)を作成します。

ブラウザ上に「Hello Docker!」と表示するだけのシンプルなソースコードです。

Dockerfile

Go公式イメージに依存関係管理のための go.mod を入れた Dockerfile を作成します。

簡単に解説すると、以下のコマンドgo.mod の雛形を作成。

go mod init example.com/myapp

以下のコマンドmain.go に書かれた import “hoge” を参照して、必要なモジュールを過不足なくインストールし、かつ 自動的に go.mod と go.sum を更新しています。

go mod tidy

この時点で生成される go.mod は以下の通りです。

なお今回はWebアプリなので、ポート番号:8080を設定しています。

DockerイメージのビルドとWebアプリ起動

こちらの記事を参考に VS Code の Remote – Containers からイメージのビルドを行います。

ビルドに成功し、かつコンテナに接続できたら、ターミナルを開いて、以下のコマンドで $WORKDIR に移動します。

cd /go/src/app

以下のコマンドでアプリを起動後、適当なブラウザから http://localhost:8080 にアクセスすれば、「Hello Docker!」と表示されます。

go run main.go

DockerとVSCodeでWebアプリ開発 -main.goの編集-

main.go$WORKDIR だけでなく、Windows上に作ったプロジェクトフォルダ:docker-go の中にも存在します。各階層の構成は以下の通りです。

docker-go は DockerコンテナとWindowsとのシェアフォルダになっているので、このフォルダ内でアプリ開発をするのが楽です。

つまり、docker-goの内部ならWindowsのGUIやVSCodeからソースコード編集やファイル作成などができるので、開発が捗ります。

以下のコマンドでディレクトリ移動と go.modgo.sum のコピーをします。

cd /workspace/docker-go/
cp $GOPATH/src/app/go.sum ./
cp $GOPATH/src/app/go.mod ./

なお $GOROOT は以下のコマンドで確認できます。

go env GOROOT

最終的なプロジェクトフォルダの構成は以下の通りです。

あとは main.go を好きに編集し、先ほど同様、以下のコマンドで実行・動作確認などを繰り返しながら、開発を進めればOKです。

go run main.go

Windows用の実行ファイルをつくる

Goの魅力の1つは各環境に応じた実行ファイル(シングルバイナリ)を簡単に生成できる点です。

例えば、Windows用の実行ファイル(myapp.exe)を生成するには、以下のコマンドでビルドするだけです。

GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go

Windows上から myapp.exe をダブルクリックすれば、先ほど作成したWebアプリが起動します。

はやぶさ
はやぶさ
Dockerコンテナ上からWindows用の実行ファイル生成できるの最高
スポンサーリンク

Go開発環境の配布

実行ファイルを配布したいときは、先ほど作成した myapp.exe を配布するだけですが、開発環境を配布したいときや、コンテナごとデプロイしたいケースがあります。そんなときも Dockerを使うのがオススメです。

Dockerfile 編集

今まで扱ってきたプロジェクトフォルダ:docker-go を中身ごとコピーして、myapp-go などにリネーム後、Dockerfile を以下のように編集します。

あとは myapp-go を中身ごと配布するだけです。

まとめ

WSL2 + Docker + VS Code の Remote – Containers のGo開発環境が最高だったので、構築方法と実践チュートリアルを紹介しました。

Docker入門Webアプリ開発入門の勉強にもなると思うので、参考になれば嬉しいです。

また、何らかの理由で Docker を使えない/使いたくない人は Scoop + VS Codeを使ったGo言語の環境構築手順を説明した記事もあるので、参考にしてください。

Go言語(Golang)環境構築
【Go言語入門】ScoopとVSCodeで環境構築 -Windows編-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。諸事情あってGo言語入門しました。 Windows...

Goの開発環境も整ったし、今後もGoの記事を書きたいと思います。

はやぶさ
はやぶさ
つよつよGoエンジニアになりたいな。

以下 Go言語の本紹介。最初の一冊は「みんなのGo言語」がオススメです。

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python