AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

docker の provenance オプション

ECR に image push したら複数登録されてなんかおかしいと思ったら provenance: false を指定しておこう、という話。

状況

以下のように、 GithubActions から docker build -> ECR へ push した image が複数登録されて「?」みたいな状態になっていた。 ミドルウェアなど更新中なので脆弱性がめっちゃあるのは見なかったことに……。

なぜか index 含めて image が複数登録されてしまう

2022 年頃はこのような動作じゃなかったので、どこの問題だ〜? となっていた。

github.com

github.com

結局原因は Docker の build 側で SALS という仕組みが取り入れられた事と、 コンテナリポジトリ側がそれらに対応できてないことでぶっ壊れている感じだった。 なおこの状態でも latest タグを fargate の参照元にしてるけどちゃんと動いてはいた。 (世代管理が壊れるのでそこだけオフにしていた)

以下のように provenance を指定するととりあえず解決する。

    - uses: docker/build-push-action@v4
      with:
        file: docker/Dockerfile
        push: true
        tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
        cache-from: type=local,src=/tmp/.buildx-cache
        cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
        token: $${ secrets.PAT }}
        provenance: false #これ

あらましなどは以下がわかりやすかった、たすかる〜。

chroju.dev