はじめに
メモ的な
やろうとしたこと
circleci version2 を利用して、docker multi stage builds でビルドしようとしました。
結果
できませんでした!(2017/05/29時点) ※ docker for mac の edge ならできます!
内容としては、こんな感じです。
- golangアプリケーションのコンテナビルドをしたい
- 軽量化するために multi stage builds を利用
- circleci 2 でのベースイメージは docker:17.05.0-ce-git
- エラーが出る
Error parsing reference: "golang:1.8.3 as alias" is not a valid repository/tag: invalid reference format
理由
色々調べたのですが、「最新のdocker(dege)使えばいけるよー」みたいな記事ばっかだったのですが、こんな記事を発見しました。
Multi-Stage builds on docker hub
Docker HubとDocker Cloudの自動ビルドサービスは、この機能が安定したチャネルに卒業した時点でマルチステージビルドのサポートを追加する予定です(現在、17.06リリースの6月をターゲットにしています)。
これってつまり、docker社が提供する docker実行可能 docker イメージでの multi stage builds は 17.06からできるようになりますよ(17.05ではできませんよ)ということなんでしょうか。。。
結果
docker hub ですらサポートされていないのだから、circleci でサポートされてないよなーなんて思いながら、今まで通り Dockerfile を分けてビルド結果からアプリケーション実行ファイルを docker cp してー。。。とやりました。
(これでもイメージの軽量化はできるので問題ないのですが・・・)
終わりに
いやいや、circleci で multi stage builds できるから!など情報ありましたらコメントいただけると嬉しいです!
参考
追記
jobs:
build:
steps:
- setup_remote_docker:
version: 17.05.0-ce
こいつが肝なようでした。
jobs:
build:
docker:
- image: docker:17.07.0-ce-git
ここで指定すればOKだと思っていましたが、job の default image が 17.03 のようで、setup_remote_docker で指定してあげないとだめみたいです。