Dockerイメージのgolang:1-alpineはgo getできない

とにかくコンテナのベースイメージは軽い方が良いんでしょ?みたいなノリでalpineベースのイメージを使おうとして失敗した。

gitがないからgo getできない。

% docker run --rm -it golang:1-alpine /bin/sh
/go # go get -u github.com/golang/dep/cmd/dep
go: missing Git command. See https://golang.org/s/gogetcmd
package github.com/golang/dep: exec: "git": executable file not found in $PATH
/go # which git
/go #

gitをインストールして、再度go getする。

/go # apk add --no-cache git
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/5) Installing libssh2 (1.8.0-r2)
(2/5) Installing libcurl (7.60.0-r0)
(3/5) Installing expat (2.2.5-r0)
(4/5) Installing pcre2 (10.30-r0)
(5/5) Installing git (2.15.0-r1)
Executing busybox-1.27.2-r7.trigger
OK: 19 MiB in 17 packages
/go # which git
/usr/bin/git
/go # go get -u github.com/golang/dep/cmd/dep
/go # which dep
/go/bin/dep

無事、go getできた。

実際のところマルチステージビルドをやるので、ビルド環境についてはあまり軽量化は考えなくても良いのかもしれない。