Open2
docker bake with GitHub Actions

イメージ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
で、できあがり。

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 を無効化してます