した直方体スマートフォン用の表示で見るぷるぷるした直方体エンジニアの雑記です。Build機能により、Dockerfileを非常に簡潔に書くことができるようになりました。感動したのでユースケースごとに嬉しい点をまとめておきます。この内容のメモを書いてからかなり時間が経っているので、すごく今更な記事になってしまいました。Buildは2017/05にリリースされたバージョンから使えるようですので、1年近く経ってますね......。Buildについての記事も上がっています。計測などもあり興味深い記事となっていますので、ぜひ先にご参照ください。本記事のユースケース1を詳細に説明している内容です。Buildを語る上で欠かせないメリットですね。成果物(と必要なライブラリ)をコピーする事により、ビルドだけに必要なプログラムや余計なレイヤーをイメージから除外することができます。上記は多くのコンテナで共通のメリットですが、特にGo言語のプログラムでは威力が大きいです。Goのプログラムは1バイナリをコピーするだけで動くため、極めて軽量なイメージにできるからです。それまでは実現できなかった、数MB程度のイメージにすることができます。開発環境だけで使うプログラムホットリロードツールやデバッガなど、開発環境では重宝しますがリリース時には使いたくないプログラムがあります。Buildが無い場合、2つのDockerfileを用意する必要がありました(Dockerfile.devとDockerfile.prodなど)。ビルドのための準備はそれぞれのファイルで同じなため、両方変更する必要がありメンテナンス性を下げる原因となっていました。Buildを使うことにより、ビルドをするコードはそのまま、開発環境だけで使うプログラムをイメージから除外することが単一のDockerfileで可能になります。docker-comopseから使う場合の修正も軽微です。Buildの最も便利な使い方だと思います。リファクタリング上記の2つを実行した副産物ですが、各ステップの依存関係がわかりやすくなります。2つのプログラムをビルドし、その成果物を使ってプログラムを動かす場合を考えます(プラグインのビルド、ローカル証明書の作成などがそれぞれのステージ)。従来ではイメージサイズを減らすため、Dockerfileの1レイヤーでひたすらビルドをし、最後に実行としていました。Buildにより、依存関係をそれぞれのステージに切り出すことができ、よりわかりやすいDockerfileになります。Buildは複雑なDockerfileをシンプルにすることができるとても便利な機能です。軽量で分かりやすいDockerfileを目指して有効活用してゆきましょう。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。