今回の目的
今回はGoの開発環境をM1 Macbook pro上にRancher desktopを利用してコンテナ環境を構築します。そこでTour of Goの環境を実行します。
オンラインでもできますが、せっかくなので写経的な形で進めるためにGoの環境を用意します。多少環境祭などもでてくるでしょうが細かいことは気にせずにやっていきます。
kubernetesとかを仕事で使っているのですが、Goで作成されている製品なのでGo言語自体の学習もしたいなと思った次第です。
#### 環境
M1 Macbook pro: macOS Ventura 13.0.1
Rancher desktop v1.7.0
コンテナイメージ: Ubuntu20.04
Go: v1.19.4
Rancher desktopはDocker desktopと同じような製品ですが、CRIにdockerとcontainerd選ぶのを選べたりkubernetesのバージョンアップ検証ができたりと便利な製品となっており、無料で使えるにいい機能が揃っています。
今回もコンテナ環境を構築する上でDockerのほうが使い慣れているので、dockerコマンドを利用したいと思っていたのでちょうどよかったです。ローカル環境での開発にはいいものだと思うのでぜひ使ってみてください。
今回はRancher desktopの環境構築方法等は割愛いたします。利用は難しくないので、Docker desktopからの移行を考えている方はインストールしてみてはどうでしょうか。
https://rancherdesktop.io/
環境構築
今回はコンテナ上でGoを実行していきますが、ソースなどはローカルに残しときたいのでディレクトリをマウントしておきたいと思います。
以下でローカルディレクトリをマウントしたコンテナを立ち上げます。
docker run -it -d --name tour-of-go -v /Users/takushi/dev-env/go:/go ubuntu:20.04
ここからはコンテナ内で作業するためにまずコンテナに入ります。
docker container exec -it tour-of-go bash
コンテナ内に入りましたら、Goのダウンロードおよびインストールを実行します。
apt update
apt install wget
wget https://go.dev/dl/go1.19.4.linux-arm64.tar.gz
tar -C /usr/local/ -xzf go1.19.4.linux-arm64.tar.gz
これでひとまずダウンロードが完了しました。Goを実行するにはGoのPathを通してあげなければなりません。以下のように設定します。
export PATH=$PATH:/usr/local/go/bin
これで問題なくできていればgoのコマンドが通るようになります。
root@b869a1d8854c:~# go version
go version go1.19.4 linux/arm64
ただ、これだと一時的にパスを通したにすぎません。永続的にパスを通したい場合は、$HOME/.profile
もしくは/etc/profile
の末尾に以下を追記する必要があります。
export PATH=$PATH:/usr/local/go/bin
追記後、以下コマンドで永続的にパスを通すことができます。
sourve $HOME/.profile
これで基本的な設定は完了です。ローカルマシンのコンテナにマウントしたパスにファイルを格納することでGoが実行できるか確認します。
ソースファイル実行
プログラムを学ぶ時にはやはりHello, World
を実行してあげなければ始められません。
なので、以下ソースをマウントしたディレクトリに格納します。
package main
import "fmt"
func main() {
fmt.Println("hello, go")
}
配置したらコンテナ環境に戻り実行してみます。
root@b869a1d8854c:/go# go run hello.go
hello, go
成功です。
今回は最小限の力でGo環境を構築しました。
これからGoの学習を進めていきたいと思います。
GOについてのTipsなど書き残したいことができたらまた投稿しようと思います。