やったこと
Go の開発環境を Docker で構築してみます。
確認環境
$ docker --version
Docker version 19.03.13, build 4484c46d9d
$ docker-compose --version
docker-compose version 1.27.4, build 40524192
調査
Quick start
こちらを使います。
$ git clone git@github.com:tamesuu/docker-sample.git
$ cd docker-sample/golang/
$ mkdir work
ホストOS
$ vim work/main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
ホストOS
$ docker-compose up -d
Recreating golang_app_1 ... done
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
832161a8fe30 golang_app "bash" 58 seconds ago Up 57 seconds 0.0.0.0:9000->8080/tcp golang_app_1
$ docker-compose exec app go run main.go
Hello, World!
docker-compose --help
より
exec Execute a command in a running container
コンテナに対して、コマンドを実行します。
ディレクトリ指定版
$ mkdir work/hoge
$ vim work/hoge/server.go
$ docker-compose exec app go install hoge
docker-compose exec app go help
より
install compile and install packages and dependencies
$ docker-compose exec app ../bin/hoge
server dayo
$ docker-compose exec app go env | grep GOPATH
GOPATH="/go"
ここはハマったのですが、go install
した時、go/bin
にビルドされた結果が出力されるようでした。
go/src
go/bin