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。

参考