🤖
Docker MultiStage Buildが(社内に)普及しないので供養のため記事する話
モチベーション
題名の通り。
「動くから変えなくてもいいべ?」「下手に変えて環境壊れたら責任どうすんの?」で身動きが取れず辛みの渦中にある。
ので、本記事で供養とささやかな抵抗を。
環境
- WSL2
- Ubuntu 20.04
- Docker Desktop for Windows
現象
-
Dockerfile
が Develop / Staging / Production 環境で分けて管理されている。- 新しくモジュール追加などがあった場合、もれなく
Dockerfile
を変更する必要がある。
- 新しくモジュール追加などがあった場合、もれなく
- DockerImage のサイズが大きくなりがち。
結論
Docker の multistage buildを導入する。
導入メリット
- 環境(Develop / Staging / Production)ごとに、
Dockerfile
を統一できる - Docker Image のサイズ削減
導入デメリット
- multistage build への理解が必要
コードや動作的にも、それくらい理解してくれよ、という嘆き
サンプルコード
その他
- Python だと Image のサイズ、という観点では嬉しさは少ない
- Python が OS のモジュールを使う前提、というところがあるため
- OS のイメージを小さくする、等ができるもの(golang など)だと、Image サイズはガッツリ減らせる
Discussion