Open2

docker bake with GitHub Actions

bibidevbibidev

イメージbuild時にplatformの違いなど面倒でだいたいビルド方法忘れるので、bake使ったのでそのメモ

設定は、

  • docker-compose.yml に記述
  • docker-bake.hcl または docker-bake.jsonなどで別ファイルに記述
  • コマンド引き数気合い

があるらしいが、軟弱おっさんでdocker-compose.ymlが長いとへこむので docker-bake.hcl を使う

docker-bake.hcl
target "default" {
  dockerfile = "Dockerfile"
  tags = ["ghcr.io/my-iketeru-app/app:latest"]
  platforms = ["linux/amd64", "linux/arm64"]
}

そして実行すると・・・

$ docker buildx bake -f docker-bake.hcl
ERROR: Multiple platforms feature is currently not supported for docker driver. Please switch to a different driver (eg. "docker buildx create --use")

はい。
私は Docker Desktop (mac) 4.24.0 つかてます。

$ docker buildx create --use --driver docker-container mybuilder
$ docker buildx bake -f docker-bake.hcl
WARNING: No output specified for xxxxxx target(s) with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load

なんかでたので、 --push つけてあげましょう。

$ docker buildx bake --push -f docker-bake.hcl

で、できあがり。

bibidevbibidev

GitHub Actionsで Workflowにしちゃいましょう。

.github/workflow/bake.yml
name: Bake image

on:
  push:

jobs:
  bake:
    runs-on: ubuntu-latest
    steps:
       - uses: actions/checkout@v4
       - uses: docker/setup-buildx-action@v3
       - uses: docker/login-action@v3
         with:
           registry: ghcr.io
           username: ${{ github.actor }}
           password: ${{ secrets.GITHUB_TOKEN}}
       - uses: docker/bake-action@v3
         with:
           files: docker-bake.hcl
           targets: default
           provenance: false
           push: true

Lambdaの都合で provenance を無効化してます