Kuby-core: buildxの使用

作成日 2021年12月13日  ·  6コメント  ·  ソース: getkuby/kuby-core

docker builddocker buildx build $として呼び出すためのサポートを追加しようとしましたが、それよりも少し複雑になる可能性があります

私の意図は、これらのタイプのパラメーターを追加することです。

https://github.com/fluxcd/image-reflector-controller/blob/62c06ea58cd14072fde2c9ada7c6970dedf580e5/.github/workflows/build.yaml#L57 -L59

次に、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プロジェクトのどこかに住んだりするために、タグを付けて例を作成する準備がほぼ整ったと思います👍

最も参考になるコメント

了解しましたdocker builddocker buildxの単なるエイリアスである場合、Kubyが特別なことをする必要はないと思います。 必要なビルダーをセットアップするのはユーザーの責任です。

全てのコメント6件

おい!

デフォルトのビルダーとして設定すれば、今すぐbuildxを使用することができます。

次に、 buildxとそのキャッシュ機能を使用するGithubアクションの例を示します。

https://evilmartians.com/chronicles/kubing-rails-stressless-kubernetes-deployments-with-kuby#deploying-continuously-with-kuby-and-github-actionsも参照してください

キャッシュの設定に問題があったため、 --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 builddocker buildxの単なるエイリアスである場合、Kubyが特別なことをする必要はないと思います。 必要なビルダーをセットアップするのはユーザーの責任です。

このページは役に立ちましたか?
0 / 5 - 0 評価