GoのためのDockerfile
base image
library/golang
で公式イメージが用意されている。ユースケースに合わせていくつかの種類が用意されている。
golang:<version>
: 何が必要なのか分かっていない場合はこれを使った方がよさそう。golang:alpine
: Alpine Linuxをベースとしているため非常に軽い。イメージサイズを小さくしたい場合に推奨されている。golang:onbuild
: ネット上ではよく紹介されているが、公式では非推奨とされている。
ディレクトリレイアウト
$ docker run -i -t --rm golang:1.9 /bin/bash root@xxxxxxxxx:/go# pwd /go root@xxxxxxxxx:/go# ls bin src root@xxxxxxxxx:/go# env | grep GO GOLANG_VERSION=1.9 GOPATH=/go
GOPATH
が/go
に設定されているので、/go/src/
以下にWORKDIR
を設定していく。
Dockerfile
FROM golang:1.9 WORKDIR /go/src/github.com/naoty/golang-sample COPY . . RUN go install github.com/naoty/golang-sample ENTRYPOINT ["golang-sample"]
go install ...
で/go/bin/
以下にバイナリがビルドされる。PATH
は/go/bin
も含まれているため、そのままビルドされたバイナリを指定するだけでOK。