[GitHub Actions] docker-compose利用時にimageのキャッシュを利用する方法

build-push-actionを利用する。

注意点が2つ

  • build-push-actionのloadをtrueにする
  • docker-composeとactions側でイメージ名を合わせる(docker-composeのimageの値がbuild-push-actionのtagsに含まれていること)

workflows/xxx.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    - uses: docker/setup-buildx-action@v2
    - uses: docker/build-push-action@v3
      with:
        load: true # <- point 1
        context: .
        push: false
        tags: backend_app:latest # <- point: 2
        cache-from: type=gha
        cache-to: type=gha,mode=max
    - run: docker-compose up -d app

docker-compose.yml

1
2
3
4
  app:
    image: backend_app:latest # <- point: 2
    build:
      context: .

参考

備忘録

buildxを利用していてtarget指定も使っているときは、workflows側もdocker-compose側もtarget指定が必要な模様(target指定を両方つけたときに動いた気がしたが問題を切り分けずに一気にやっていたので記憶が定かではない)

https://kotaroooo0-dev.hatenablog.com/entry/2020/08/06/012316

BuildKit を使ったビルドでは中間イメージが生成されません

とあるのでたぶんあっている。

Built with Hugo
テーマ StackJimmy によって設計されています。