この記事では、Maven Dockerの画像を使用するための手法を紹介し、次のようにそれらを共有しています。
Mavenは、現在最も人気のあるJavaプロジェクト管理ツールの1つであり、強力なパッケージ依存管理とアプリケーションの構築機能を提供しています。
Dockerは、Javaアプリケーションの管理と構築に使用できる公式のMaven画像を提供します。 Mavenツールを直接インストールするのと比較して、Docker画像を使用すると、より良い移植性が高く、簡単に切り替えることができます。これは、継続的な統合中に使用するのに最適です。
Maven公式ミラーの使用については、使用文書を参照してください。
Alibaba Cloudを使用して加速します
国内ネットワーク上のMavenの公式倉庫のダウンロード速度は本当に悲痛です。 Alibaba CloudのMaven画像を使用すると、ソフトウェアパッケージのダウンロード速度を大幅に改善できます。
公式のMaven画像に基づいて、Alibaba Cloud Image構成を追加できます。そのコードは、https://github.com/aliyuncontainerservice/maven-imageで入手できます
その構成ファイル設定。xmlは次のとおりです
<settings xmlns = "http://maven.apache.org/settings/1.0.0" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation = " https://maven.apache.org/xsd/settings-1.0.0.xsd "> <localrepository>/usr/share/maven/ref/repository </localrepository> <mirrors> <mirrors> <mirrors> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> </mirror> <mirrir> <! - これは、以下のNexusグループに以下のプロフィールでパブリックスナップショットリポジトリを指示するために使用されます - > <id> <id> <id> </mirror-id> </id> </mirrors <url> http://maven.aliyun.com/nexus/content/repositories/snapshots/ </url> </mirrer> </mirrors> </settings>
Alibaba Cloud Container Serviceは、レジストリを直接使用するための事前に構築されたDocker画像を提供します。
MVNコマンドを使用してアプリケーションを構築するなど、現在のディレクトリで次のコマンドを直接実行できます
コードを次のようにコピーします:docker run -it -rm - name maven -v "$(pwd)":/usr/src/app -w/usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven MVNクリーンインストールインストール
ダウンロードしたMavenリポジトリをキャッシュできるようにしたい場合は、Dockerのファイルボリュームを使用して実装できます
まず、次のコマンドを実行して、「Maven-Repo」と呼ばれるファイルボリュームを作成します
DockerボリュームCREATE -NAME MAVEN-REPO
後続の呼び出しで、Maven Imageのリポジトリダウンロードディレクトリにマウントします
コードを次のようにコピーします:docker run -rm - name maven -v "$(pwd)":/usr/src/app -v maven -repo:/usr/share/maven/ref -w/usr/src/app registry.cn-hangzhou.aliyuncsc.
このようにして、Mavenリポジトリは毎回ダウンロードされません。
DockerFileを最適化して、ビルド速度を向上させます
DockerFileでアプリケーションを構築し、Docker構築中に階層キャッシュメカニズムを使用してビルド速度を改善できます
これがサンプルdockerfile.buildファイルです
Registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8env my_home =/usr/src/apprun mkdir -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home ["/usr/local/bin/mvn-entrypoint.sh"、" mvn"、 "verify"、" clean"," - fail-never"] sourceaddを追加します。 $ my_home#run maven verifyRun ["/usr/local/bin/mvn-entrypoint.sh","mvn"、" verify "]]
重要なトリックの1つは、最初に作業ディレクトリにpom.xmlを追加し、Mavenコマンドを使用してアプリケーションに必要なJARパッケージをダウンロードし、次にコンパイル用にアプリケーションソースファイルを追加することです。このように、POM.XMLが更新されない限り、依存関係JARパッケージは再ダウンロードされず、画像の構造速度を大幅に高速化できます。
次のコマンドを介してアプリケーションをコンパイルできます
docker build -t builder -img -f dockerfile.build。
個別のアプリケーションコンピレーションとDocker画像構造
静的コンパイルされた言語の場合、通常、アプリケーションの編集プロセスをミラー構造プロセスから分離する必要があります。主に2つの考慮事項があります。
次のように、Docker画像からアプリケーションコンパイルの結果をコピーできます
docker build -t builder -img -f dockerfile.build .docker create - 名前ビルダー-imgdocker cpビルダー:/usr/src/app/target ./target
この時点で、Maven Constructionの結果は、現在のディレクトリの「ターゲット」サブディレクトリにコピーされます。
その後、別のdockerfileを使用してアプリケーション画像を作成できます。スペースが限られている場合、詳細は説明しません。
要約します
この記事では、Mavenを例として使用して、アプリケーション構造にDockerの一般的な手法を紹介します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。