Goの学習を始めた方はまず「A Tour of Go」で勉強すると思いますが、その後Goについてどう学ぼうか悩むと思います。そんな人向けに何回かに分けて、Goを学べる記事を書いていこうと思います。
まずは第1回目なので、自分のローカル環境で試せるように、Docker上でGoを動かせる環境を作る方法を紹介します。
また実行環境はMacやLinuxの環境を想定しています。
準備
以下のGitHubにサンプルコードを置いているので、こちらをgit cloneしてもらえれば使えます。
それか同じファイル構成を作ってもらって、ファイルの中身をコピーしてもらえたらと思います。
ファイル構成(READMEはコピー不要)
.
├── README.md
├── docker-compose.yml
└── src
└── hello.go
docker-compose.yml
イメージはgoの1.19バージョンを使用
volumesで./src配下を全てマウントする。
/workで基本作業します。
ttyをtrueにすることで、コンテナが正常終了するのを防ぎます。
version: "3.9"
services:
go-env:
image: golang:1.19-bullseye
volumes:
- ./src:/work
working_dir: /work
tty: true
hello.go
単純に、「Hello world!!」を出力するソース。
package main
import "fmt"
func main() {
fmt.Println("Hello world!!")
}
実行
docker-compose.ymlがあるディレクトリで、docker-compose upをしてコンテナを立ち上げる。
# docker-composeを立ち上げる
% docker-compose up
[+] Running 1/0
⠿ Container go-go-env-1 Created 0.0s
Attaching to go-go-env-1
別タブでターミナルを開いて、立ち上げたコンテナに接続する。
# docker psで立ち上げたコンテナを確認
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9cb5418f139 golang:1.19-bullseye "bash" 9 minutes ago Up 9 minutes go-go-env-1
# コンテナに接続、go-go-env-1はコンテナのNAMES
% docker exec -it go-go-env-1 bash
# ワークディレクトリ(/work)にいることを確認
root@f9cb5418f139:/work# pwd
/work
go run hello.goを実行すると、「Hello world!!」が出力されていることを確認できます。
root@3ceb10d09fa5:/work# go run hello.go
Hello world!!
まとめ
今回Docker上でGoを実行できる環境を作る方法を紹介しました。
次はgo modやパッケージについての記事を書いて行こうと思います。
また今回の記事以外にもGo言語の記事、初心者必見のLinuxコマンドについての記事を書いておりますので、もし興味がありましたら、そちらも読んでいただけたらと思います。
【おすすめ記事のリンク】
コメント