🤖

Docker MultiStage Buildが(社内に)普及しないので供養のため記事する話

2022/09/05に公開

モチベーション

題名の通り。

「動くから変えなくてもいいべ?」「下手に変えて環境壊れたら責任どうすんの?」で身動きが取れず辛みの渦中にある。
ので、本記事で供養とささやかな抵抗を。

環境

  • 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 への理解が必要
    • コードや動作的にも、それくらい理解してくれよ、という嘆き

サンプルコード

https://github.com/ryoutoku/docker-multistage-build

その他

  • Python だと Image のサイズ、という観点では嬉しさは少ない
    • Python が OS のモジュールを使う前提、というところがあるため
  • OS のイメージを小さくする、等ができるもの(golang など)だと、Image サイズはガッツリ減らせる
GitHubで編集を提案

Discussion