1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Goの開発環境をMac上でDockerで構築する

Last updated at Posted at 2022-12-26

今回の目的

今回は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を実行していきますが、ソースなどはローカルに残しときたいのでディレクトリをマウントしておきたいと思います。
以下でローカルディレクトリをマウントしたコンテナを立ち上げます。

mac
docker run -it -d --name tour-of-go -v /Users/takushi/dev-env/go:/go ubuntu:20.04

ここからはコンテナ内で作業するためにまずコンテナに入ります。

mac
docker container exec -it tour-of-go  bash

コンテナ内に入りましたら、Goのダウンロードおよびインストールを実行します。

container
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を通してあげなければなりません。以下のように設定します。

cotainer
export PATH=$PATH:/usr/local/go/bin

これで問題なくできていればgoのコマンドが通るようになります。

container
root@b869a1d8854c:~# go version
go version go1.19.4 linux/arm64

ただ、これだと一時的にパスを通したにすぎません。永続的にパスを通したい場合は、$HOME/.profileもしくは/etc/profile の末尾に以下を追記する必要があります。

export PATH=$PATH:/usr/local/go/bin

追記後、以下コマンドで永続的にパスを通すことができます。

cotanier
sourve $HOME/.profile

これで基本的な設定は完了です。ローカルマシンのコンテナにマウントしたパスにファイルを格納することでGoが実行できるか確認します。

ソースファイル実行

プログラムを学ぶ時にはやはりHello, Worldを実行してあげなければ始められません。
なので、以下ソースをマウントしたディレクトリに格納します。

package main

import "fmt"

func main() {
  fmt.Println("hello, go")
}

配置したらコンテナ環境に戻り実行してみます。

container
root@b869a1d8854c:/go# go run hello.go 
hello, go

成功です。

今回は最小限の力でGo環境を構築しました。
これからGoの学習を進めていきたいと思います。
GOについてのTipsなど書き残したいことができたらまた投稿しようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?