問題タブ [jib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - Spring Boot の Jib を使用して Docker リポジトリのイメージ ストレージを最適化する
Jib を使用して Docker イメージを構築すると、リモートの Docker リポジトリ ストレージを最適化できますか?
Gradle を使用して Docker で Spring Boot を使用しています。現在、すべての依存関係が内部にパックされた標準のファット ブート jar を作成してから、次のようにイメージを作成しています。
これにより、実際にはコードがほとんど変更されていない場合でも、ビルドするたびに大きな (250 MB) 新しいイメージが作成されます。これは、fat jar に共有依存関係 (頻繁に変更されない) とコードの両方が含まれているためです。これは、プライベート リポジトリのストレージ スペースの非効率的な使用法であり、これを変更したいと考えています。
このためのアイデアは次のとおりです。
/opt/libs に依存関係のみを含む基本イメージを作成し、それを呼び出して
spring-base:1.0.0
、プライベート Docker レジストリにプッシュしましょう。そのイメージを、コードのみを含むアプリケーション イメージの親/ベースとして使用します。Dockerfile は次のようになります (概念を提示するためだけにテストされていません)。
/li>
これらのイメージははるかに小さく、依存関係のある大きな基本イメージは一度だけ保存されるため、多くのストレージが節約されることが期待されます。
私たちの同僚は、Jib を調べて、まさにこれを行うと主張しましたが、ドキュメント全体と FAQ を読み、少しいじってみましたが、よくわかりません。私たちはそれを統合して使用./gradlew jibDockerBuild
し、依存関係、リソース、およびクラスのレイヤーを作成しているように見えますが、まだ 1 つの大きなイメージしかありません。Jib はビルド時間の短縮 (Docker レイヤー キャッシュの利用による) と再現可能なビルドに重点を置いているようですが、そのイメージをリポジトリにアップロードしても、現在のソリューションと比べて何も変わらないと思います。「静的な」依存関係を引き続き保存します。何度も繰り返しますが、新しい画像ごとに 1 つだけではなく、複数のレイヤーを持つようになります。
Docker と Jib の経験が豊富な方で、Jib が私たちが求めているストレージ スペースの最適化を提供してくれるかどうか説明していただけますか?
編集:答えを待っている間、私はこれらすべてをいじってhttps://github.com/wagoodman/diveを使用しdocker system df
、docker images
サイズを確認し、画像とレイヤーを調べました.Jibはまさに何をしているようです必要です。
jib - ジブ - 「「useCurrentTimestamp」が見つかりません」
次のように、jib を pom.xml ファイルに追加します。
次のビルド コマンドを実行した後、
次のエラーが表示されます。
UseCurrentTimestamp は既に構成に含まれています。オンライン検索の後、1 つのエントリのみが見つかりました: https://github.com/GoogleContainerTools/jib/issues/413。ページに解決策が表示されません。
何が欠けている?
docker - Gitlab CI で Maven jib プラグインを実行中に docker デーモンに接続できない
ジブ Maven プラグインを使用して、Gitlab 継続的インテグレーションで自分のアプリケーションで Docker イメージを構築しようとしていますが、dind (docker-in-docker) サービスを使用してプラグインを docker デーモンに接続できません。現在、gitlab-ci.yml ファイルでこの構成を使用しています。
これは私が得るエラーです:
[エラー] プロジェクト my-application でゴール com.google.cloud.tools:jib-maven-plugin:0.9.11:dockerBuild (default-cli) を実行できませんでした: Docker デーモンへのビルドに失敗しました。インストール済みで、それを実行するための正しい権限を持っている -> [ヘルプ 1]
アップデート
2.2.0 に更新し、ローカルで実行しています。以前にコマンドを追加しましたがdocker images
、プラグインは Gitlab CI で docker コマンドを見つけることができないようです:
$ docker images && mvn compile jib:dockerBuild /bin/bash: 97 行目: docker: コマンドが見つかりません
これは、jib プラグインの構成です。