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, --tty
TTYを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!