強力なDockerイメージビルダー
11101 ワード
導入
ジブは何ですか.ジブはDockerなしでJavaプロジェクトのDockerイメージを生成するのを助けるためにGoogleによって作成されたライブラリです.
それはどういう意味ですか.
グローバルプレゼンテーション
古典的な方法では、JavaプロジェクトにDockerFileを持たなければなりません.コマンドラインでDockerイメージをビルドし、レジストリにプッシュします.このようにして、ローカルにDockerを持ってイメージを構築することができ、Dockerに関する知識やDockerFileを構築する方法があります.
Googleによって提案された新しい方法はずっと簡素化されている.ここでは、エントリ要素(プロジェクト)とプロセス内の1ステップ(ビルド)があります.我々はもはやローカルチェッカーを必要としない.そして、DEVSは我々が欲しいイメージを構築するためにいくつかの要素を構成しなければなりません.
技術発表
ジブを使用するには、次の3つの方法があります.
Mavenプラグイン
最も簡単な形式では、Mavenプラグインの実装はこのようになります.
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
...
</plugins>
</build>
...
</project>
これは単純なビルドセクションの宣言です.しかし、これにより、ローカルを生成することができます.tarファイル.mvn compile jib:buildTar
DockerImageを作成し、この設定でレジストリにプッシュしようとすると、より多くのパラメータが必要になることがわかります.> mvn compile jib:build
...
[ERROR] Failes to execute goal com.google.cloud.tools:jib-maven-plugin:2.5.2:build (default-cli) on project jib-demo: Missing target image parameter.
ドキュメントを使用すると、必要なデータを2つ指定できます.<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<to>
<image>docker.io/my-docker-id/my-app</image>
</to>
</configuration>
</plugin>
</plugins>
</build>
あなたが個人的な倉庫にDockerイメージを押したいならば、それも次のオプションで可能です.この場所では、タグのような他の設定を追加できます.<to>
<image>docker.io/my-docker-id/my-app</image>
<auth>
<username>dockerRegistry_username</username>
<password>dockerRegistry_password</password>
</auth>
</to>
Mavenプラグイン
将来のDockerイメージのために多くのものを定義することが可能であるので、あなたはイメージベースのためにいくつかの要素を定義することができます.
デフォルトではdistoless LinuxとOpenJDKランタイムの最小値だけを含むイメージ.しかし、いくつかの理由から、端末やカールのような他のツールが必要になるかもしれません.これはfromパラメーターの目的です.イメージがプライベートレジストリにある場合は、そのバージョンと資格情報を使用するイメージを定義できます.
<from>
<image>openjdk:alpine</image>
</from>
<from>
<image>docker.io/my-docker-id/my-app</image>
<auth>
<username>dockerRegistry_username</username>
<password>dockerRegistry_password</password>
</auth>
</from>
また、以下のようにイメージを設定するオプションがたくさんあります.イメージにファイルを注入して、イメージの彼らの権利を定義するExtraDirectory
<configuration>
<extraDirectories>
<paths>
<!-- Copies from 'src/main/custom-extra-dir' into '/' on the container. -->
<path>src/main/custom-extra-dir</path>
<!-- Copies from '/home/user/jib-extras' into '/extras' on the container -->
<path>
<from>/home/user/jib-extras</from>
<into>/extras</into>
</path>
</paths>
<permissions>
<permission>
<file>/path/on/container/to/fileA</file>
<mode>755</mode> <!-- Read/write/execute for owner, read/execute for group/other -->
</permission>
<permission>
<file>/path/to/another/file</file>
<mode>644</mode> <!-- Read/write for owner, read-only for group/other -->
</permission>
<permission>
<file>/glob/pattern/**/*.sh</file>
<mode>755</mode>
</permission>
</permissions>
</extraDirectories>
</configuration>
JVMフラグを追加するJVMFLAGS
<container>
<jvmFlags>
<jvmFlag>-Duser.timezone=America/Montreal</jvmFlag>
<jvmFlag>-XX:MetaspaceSize=96m </jvmFlag>
<jvmFlag>-XX:MaxMetaspaceSize=256m</jvmFlag>
<jvmFlag>-Djava.net.preferIPv4Stack=true</jvmFlag>
<jvmFlag>-Xss228k</jvmFlag>
<jvmFlag>-XX:+HeapDumpOnOutOfMemoryError</jvmFlag>
<jvmFlag>-XX:HeapDumpPath=/tmp</jvmFlag>
</jvmFlags>
</container>
どのポートを公開するかを定義するポート
<container>
<ports>
<port>8080</port>
<port>9999</port>
</ports>
</container>
環境変数を定義する環境
<container>
<environment>
<DB_PASSWORD>pwd</DB_PASSWORD>
<DB_USERNAME>usr</DB_USERNAME>
</environment>
</container>
... 詳しい情報があれば、MavenプラグインREADMEをチェックしてください.https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
あなたがJava devでないならば、あなたはプロジェクトをチェックすることができますrules_docker 以下のような他の言語でも同じことができます.
(私はそれを使いませんし、それを試しても、私はそれらについて言及したいと思います.なぜなら、Googleは彼らに言及しており、それは本当に役に立つかもしれません).
ソース
ジブ
https://cloud.google.com/blog/products/gcp/introducing-jib-build-java-docker-images-better
ルールDocker
Reference
この問題について(強力なDockerイメージビルダー), 我々は、より多くの情報をここで見つけました https://dev.to/adaendra/jib-a-powerful-docker-image-builder-3437テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol