docker build
をdocker buildx build
$として呼び出すためのサポートを追加しようとしましたが、それよりも少し複雑になる可能性があります
私の意図は、これらのタイプのパラメーターを追加することです。
次に、Dockerビルドレイヤーをより効率的な方法でキャッシュできます。 とにかく、 --cache-to
と--cache-from
のオプションは、私が使用したい他の多くのオプションと同様に、DockerBuildxでのみ使用できます。
以前は、Dockerfile内のbundlerのキャッシュボリュームを正常に有効にしていたため、GemfileとGemfile.lockを変更しても、イメージのビルド時の依存関係が完全に再計算されることはなく、代わりにキャッシュからビルドされます。新しい依存関係のみが再計算されました。
これは明らかにニッチな最適化ですが、buildxでのみ適切に処理できる他のより一般的なユースケースがあります。 ビルドキットツールセットは、今ではかなり標準になりつつあります。 buildxを使用する方法でKubyビルドを呼び出すことができれば、私はそれが大好きです!
後でもう一度実装してみるかもしれませんが、0.15.0が確実にリリースされたので簡単かもしれません。 その間、GitHubアクションの機能例があります。これはWIPですが、現在はかなり見栄えがします: https ://github.com/kingdonb/kuby_test
この最後の場所でキャッシングが適切に構成され、他のいくつかの変更が加えられたので、kuby-coreに貢献したり、getkubyプロジェクトのどこかに住んだりするために、タグを付けて例を作成する準備がほぼ整ったと思います👍
キャッシュの設定に問題があったため、 --only
フラグのようなものを探していました。 ここで行ったように、ビルドタイプごとにスコープを分離する必要があると思いました。
便利なリファレンスをありがとうございました👍私は今、彼らが私を一線を越えてくれるかどうかを確認するためにフォローしています!
setup-buildx-action( install: true
)のデフォルトのビルダー機能も間違いなくありませんでした
今は動いているようです! アプリのイメージのビルドが10秒未満で完了するのを見たところです。 私が今抱えている他の問題があります。おそらく、RAILS_MASTER_KEYが適切にエクスポートされていない場所で見つかったリグレッションですが、ソースを読んで今すぐ調べます。
このコミットのようにinstall: true
を使用すると、$#$ 4 $#$のbuild
メソッドがbuildx
lib/kuby/docker/cli.rb
を呼び出し、 --cache-to
のようなbuildx構造を渡すことができます。 --
$の後に$#$を追加して、それらを*docker-args
配列に入れます👍これを閉じることができます。ただし、kuby-coreがbuildxでの使用方法を文書化すると便利な場合があります。厳密にはクビーの問題ではありません
次の例を使用します。
https://github.com/kingdonb/kuby_test/commit/d74bf51e04253359b0d54aae7ddd6723ea6fd41d#diff -e2ad06bfd6b3aefc2d5f4fe8f60e0015b16947abc16764adef02e4339ac07a42R17-R20
buildxを使用できるので、この問題を解決できます。
これは本当にクールです、buildxのものを理解してくれてありがとう! 私はあなたが環境変数を設定できるという印象を受けました、そしてそれはJustWork™でしょう、それはそのdocker/setup-buildx-action@v1
アクションが何をしているのですか? buildxにはDockerDesktopと、deb / rpmパッケージを介してインストールされた新しいバージョンが付属しているようです。したがって、Kubyは単にデフォルトでそれを使用できるのではないかと思います。 ただし、env varを介して構成できる場合は、 docker buildx build
を呼び出す必要はないのでしょうか。 たぶん、Kubyはそれを検出して、通常のdocker build
にフォールバックできますか?
はい、可能です(GitHubアクションのinstall: true
が行うことです): https ://docs.docker.com/buildx/working-with-buildx/#set -buildx-as-the-default-ビルダー
了解しましたdocker build
がdocker buildx
の単なるエイリアスである場合、Kubyが特別なことをする必要はないと思います。 必要なビルダーをセットアップするのはユーザーの責任です。
最も参考になるコメント
了解しました
docker build
がdocker buildx
の単なるエイリアスである場合、Kubyが特別なことをする必要はないと思います。 必要なビルダーをセットアップするのはユーザーの責任です。