前置き CircleCIのworkflowで上手いことdocker-composeの重い処理をなんとかするのをやってみた。 今回はdocker-composeのbuild処理が重くてtest並列化するとそこがボトルネックになるような場合を想定している。 build自体が重くない場合や並列化が不要な場合は、むしろcache生成・呼び出しで遅くなるパターンもある。 Enabling Docker Layer Cachingなど公式のdockerキャッシュもあるが、machineモードでないとdocker-composeがフルに利用できない(volumesが利用できない)のでsave_cache / restore_cacheを使うやり方を色々ひねった。 手始めにdockerをcacheしてみる docker-composeに飛びつく前に、docker単体のpullとtestをworkflowで