ここに書くメモは凄く雑なやり方です。本来は rpm パッケージが上がるのを待つか、自分で rpm パッケージを作っていれるべきと思われます。
Docker 17.05 の新機能のマルチステージビルドをしたかった
マルチステージビルドってのは↓こういうDockerfileが書けるようにする機能ね(FROM xx AS build
や COPY --from=build
辺り)
FROM golang:1.8.3 AS build
WORKDIR /go/src/github.com/kawaz/foo
COPY glide.yaml glide.lock .
RUN glide install
COPY . .
RUN CGO_ENABLE=0 GOOS=linux go build -a -tags netgo -installsuffix netgo --ldflags '-extldflags "-static"' && rm -rf vendor .glide
FROM alpine
RUN apk add --no-cache --update tzdata ca-certificates curl
WORKDIR /app
COPY --from=build /go/src/github.com/kawaz/foo/foo .
CMD [ "./foo" ]
AmazonLinux の Docker は 17.03 だったのでバイナリ差し替えで上げた(エントリ投稿時点で 17.06.2-ce が入った)
sudo service docker stop
curl -sL \
"https://download.docker.com/linux/static/stable/x86_64/$(curl -s https://download.docker.com/linux/static/stable/x86_64/|grep -oE 'docker-[0-9\.]+-ce.tgz' | sort -Vr | head -n1)" | \
sudo tar xz -C /usr/bin --strip=1 'docker/docker*'
sudo service docker start
アーカイブの中身は以下のような感じにバイナリが8個入ってるだけなのでこれを /usr/bin に上書きで突っ込んでただけ。
- docker/docker
- docker/docker-containerd
- docker/docker-containerd-ctr
- docker/docker-containerd-shim
- docker/docker-init
- docker/docker-proxy
- docker/docker-runc
- docker/dockerd