Homebrew + Colima + Docker 環境で docker build --check したい
はじめに
Docker Desktop のライセンス問題をトリガーに約2年前から表題の Colima を長く愛用しています。
colima かわいいよ colima
話は変わって、少し前から GitHub で PR を見ている時に変更していない Dcokerfile に対してこんな Warning が表示されるようになりました。Preview と書いてあるので何か実験的にはじまったのでしょう。
これを修正したいなーと思い調べると docker build --check
で各ルールのチェックができるようです。
早速、手元で実行してみると。
$ docker build --check .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
unknown flag: --check
unknown flag と言われるし、そもそも legacy だと言われました。buildx をインストールする必要があるみたいです。
恥ずかしながら buildx の存在をこれを機に知りました😅
Buildx インストール
公式ドキュメントでは Docker Desktop にバンドルされているからと Docker Desktop のインストールが案内されていますが、前述のとおり Colima 環境に Buildx だけインストールしたいので調べるとなんと Homebrew でいけるじゃないですか!
$ brew install docker-buildx
docker-buildx is a Docker plugin. For Docker to find the plugin, add "cliPluginsExtraDirs" to ~/.docker/config.json:
"cliPluginsExtraDirs": [
"/opt/homebrew/lib/docker/cli-plugins"
]
とのことなので ~/.docker/config.json
に追記します。
ちなみに追記する前に実行すると。
$ docker buildx
docker: 'buildx' is not a docker command.
追記後は。
$ docker buildx
Extended build capabilities with BuildKit
Usage: docker buildx [OPTIONS] COMMAND
ででーん🎉
他の方法でインストールしている方は docker build
でも buildx が使われるようにもうひと手間必要みたいですが、この方法では手順としては以上になります。
docker build --check
$ docker build --check .
[+] Building 8.3s (7/7) FINISHED
# 中略
Check complete, 14 warnings have been found!
WARNING: FromAsCasing - https://docs.docker.com/go/dockerfile/rule/from-as-casing/
'as' and 'FROM' keywords' casing do not match
Dockerfile:4
--------------------
2 |
3 | # fetch images
4 | >>> FROM node:22.11.0-bookworm-slim as node
5 | FROM us-docker.pkg.dev/berglas/berglas/berglas:2.0.1 as berglas
6 |
--------------------
...
無事に動きましたー! docker build
で buildx が使われている証拠ですね。
あとは指摘事項を粛々と直していくだけです。手元でチェックできるのはありがたい。
追記:すぐに修正完了しました!
$ docker build --check .
[+] Building 1.5s (7/7) FINISHED
# 中略
Check complete, no warnings found.
おわり
同僚は何年も前から BuildKit がーとよく言っていましたが、個人的にはあまり触る機会がなかったので新鮮です。今回の Warning 対応だけでなく、ビルド最適化についても掘り下げていきたい。ビルド時間を高速化したい!やっていき!
Discussion
面白い記事ありがとうございます!
1点、これは記事の範囲外かもしれないですが質問です。
colimaはApple siliconでも問題なく動作するのでしょうか?
いつか前にApple MなんとかのCPUでうまく動かなかった記憶があり…
もしうまく動くのなら採用を検討したいです