dockerを使ったgolangの開発

dockerを使ったGo言語の開発する手順(docker-composeなし)
日本語ドキュメント
ホスト側にディレクトリとファイルを作成
$ mkdir ~/go/src/hello
$ vim ~/go/src/hello/main.go
package main
func main() {
println("hello from docker!")
}
オフィシャルでgolangのイメージが用意されているので、pullする。 https://hub.docker.com/_/golang
$ sudo docker pull golang
$ sudo docker images
REPOSITORY TAG ...
golang latest ...
コンテナを起動
$ sudo docker run -td --name godev -v ~/go/src/hello:/go/src/hello -w /go/src/hello golang
-t, --ttyTTYをtrueにして起動後すぐに終了しないようにする-d, --detachコンテナをバックグラウンドで実行する--name [名前]IDの代わりに名前を付ける-v, --volumeディレクトリを同期。ホストで編集した内容をコンテナ側にも反映させる-w, --workdirコンテナ側での作業ディレクトリ
確認
$ sudo docker ps
CONTAINER ID IMAGE COMMAND ...
28633bc88bac golang "bash" ...
ワーキングディレクトリを確認
$ sudo docker exec godev pwd
/go/src/hello
プログラムの実行
$ sudo docker exec godev go run main.go
hello from docker!
ホスト側のファイルの内容を適当に書き換える
$ vim main.go
package main
func main() {
println("docker! docker!")
}
再度実行
$ sudo docker exec godev go run main.go
docker! docker!
コンテナ側でビルドする
$ sudo docker exec godev go build
コンパイルして生成された実行ファイルがホスト側にもある
$ ls
hello
$ ./hello
docker! docker!