Dockerを使った開発における開発環境と本番環境、ついでにテスト環境
Dockerを使った開発時に、開発環境、テスト環境から本番環境までを綺麗に作りたい
開発環境は全部入り
テスト環境は全部入りでもいいが、ビルドしたものとテストに必要なものだけで済むならその方がいい(本番環境に近くなるので)
本番環境は色々削ぎ落とした必要なもののみ
Docker Composeを使ったやり方
docker-compose.ymlをdocker-compose.override.ymlとかdocker-compose.prod.ymlとかに分ける
Dockerfileだけでは完結しないので、どちらでもできる部分の適切な切り分けを考える
docker buildでできるイメージが中途半端なものになる?
本番用だけでも(docker-compose buildでできるのと同じものが)docker buildでも作れるようにしておけたら気分がいいのだが……
Gitを使ったやり方
releaseブランチに色々削ぎ落とした版を作る
Docker multi-stage buildsも使える
releaseブランチがテストされたものであることを担保しづらい(テスト環境も削ぎ落としてしまうので)
開発環境およびテスト環境と、本番環境の乖離が心配。開発環境から本番環境まで、適切に削ぎ落とす必要がある
Dockerのエコシステムで完結したい
Dockerfileを分けるやり方
環境ごとに分ける
環境ごとに複数ファイルとかになってしまうと大変なので、multi-stage buildsとか駆使してなるべく少なく分ける
Docker Composeも使う場合が多いので、docker-compose.ymlとDockerfileがそれぞれ複数あってやばいことにならないか