🦔

docker-compose.ymlをターゲットにdocker buildx buildした時にlocalのベースイメージが使えない

2024/03/17に公開

概要

docker buildx build -f docker-compose.yml でビルドしたいが、localのdocker desktopに保存されたイメージを取りに行ってくれない。ローカルでレジストリサーバーを立てるしか無いのかも。

2024/03/18 追記
dockerのdriverがdocker-containerになっていたからだった。
dockerに変更したらビルドできた。
https://docs.docker.com/build/drivers/

エラーコード

--------------------
   1 | >>> FROM my-python:latest
--------------------
ERROR: failed to solve: my-python:latest: failed to resolve source metadata for docker.io/library/my-python:latest: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

docker.io/library/ を見に行ってしまっていて、docker desktopに保存されたイメージを使っていないことがわかる。

docker-compose.yml

version: "3.9"

services:
  my-app:
    build:
      context: .
      dockerfile: Dockerfile.my-app

ビルドコマンド

docker buildx build -t my-python:latest --file ./Dockerfile.my-python . --load
docker buildx bake -f ./docker-compose.yml

--loadをつけることでdocker desktopにイメージが登録される。

docker buildx build --help
によると--output type=docker と同じ。

Dockerfile.my-python

FROM python:alpine3.19

Dockerfile.my-app

FROM my-python:latest

調べた情報

docker-composeのせいではないよ!って言っているissueでclose済み
https://github.com/docker/compose/issues/9939

同じ症状の話でまだopen
https://github.com/docker/cli/issues/3286

Discussion