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。