Dockerfileおよび,docker-compose.ymlを作成する時の注意点
Dockerfile
変更する頻度が高いものほど下に
Dockerでは一度実行したコマンドはキャッシュで状態を保持しているため、変更する頻度が高いものほど下に記述すべきである。
上記の構成だと、例えばGemfile
を更新した時に、# install bundle
からDockerが再構築される。
docker-compose.yml
Volumeを活用しよう
Volumeを活用しない場合、例えば、bundle install
を実行して、やっぱり環境を再構築しようと思った時に、せっかくbundle install
したものを再度インストールしなおす必要が出てくる。 そのため、Volume用のコンテナを用意してそこにbundle install
したものを配置すると良い。
以下はdocker-compose.yml
の構成例
上記の例は、/app/vendoer/bundle
にインストール先を指定している場合である。 また、yarnやmysqlのデータを永続化する場合にもVolume専用のコンテナを用意すると良い。 Volume専用のコンテナはbusybox
という軽量の公式イメージが有るため、それを使用すると良いだろう