2.2. Java


2.2.1. 概要

OpenShift Online は、Java アプリケーションをビルドするための S2I ビルダーイメージを提供します。このビルダーイメージは、アプリケーションソースまたはバイナリーアーティファクトを取得し、Maven を使用してソースをビルドし (ソースが提供されている場合)、アーティファクトを必要な依存関係でアセンブルし、Java アプリケーションを含む新規の実行可能な新規イメージを作成します。結果として生成されるイメージは OpenShift Online で実行したり、Docker で直接実行したりできます。

ビルダーイメージは、メインクラスで実行される Mavenベースの Java スタンドアロンプロジェクトで使用することを目的としています。

2.2.2. バージョン

現在のバージョンの Java S2I ビルダーイメージは、OpenJDK 1.8、Jolokia 1.3.5、および Maven 3.3.9-2.8 をサポートします。

2.2.3. イメージ

RHEL 7 イメージは、Red Hat レジストリーから入手できます。

$ docker pull registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift

イメージは、redhat-openjdk18-openshift イメージストリームで使用することができます。

2.2.4. ビルドプロセス

S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。

  1. ビルダーイメージからコンテナーを起動します。
  2. アプリケーションソースをダウンロードします。
  3. ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
  4. (ビルダーイメージから) assemble スクリプトを実行します。
  5. 最終的なイメージを保存します。

ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。

2.2.5. 設定

デフォルトで、Java S2I ビルダーイメージは Maven を使用して以下のゴールおよびオプションでプロジェクトをビルドします。

mvn -Dmaven.repo.local=/tmp/artifacts/m2 -s /tmp/artifacts/configuration/settings.xml -e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga -Dfabric8.skip=true package -Djava.net.preferIPv4Stack=true

これらのデフォルトに基づいて、ビルダーイメージはプロジェクトをコンパイルし、テストを実行せずにすべての推移的な依存関係を出力ディレクトリーにコピーします。また、プロジェクトに openshift という名前のプロファイルがある場合、これはビルドについてアクティベートされます。

以下の環境変数を指定すると、これらのデフォルトのゴールおよびオプションを上書きできます。

表2.1 Java 環境変数
変数名説明

ARTIFACT_DIR

JAR ファイルが複数モジュールのビルド用に作成されるターゲットへの相対パス。

JAVA_MAIN_CLASS

Java の引数として使用するメインクラス。これは、.s2i/environment ファイルでプロジェクト内の Maven プロパティーとして指定することもできます (docker.env.Main)。

MAVEN_ARGS

mvn コマンドに渡す引数。

2.2.6. Java アプリケーションのビルドとデプロイ

同じ S2I ビルダーイメージを使用して、ソースまたはバイナリーアーティファクトから Java アプリケーションをビルドできます。

2.2.7. ソースからのビルドとデプロイ

Java S2I ビルダーイメージは、ソースリポジトリーに対して oc new-app を実行してアプリケーションをソースからビルドするために使用できます。

$ oc new-app redhat-openjdk18-openshift~https://github.com/jboss-openshift/openshift-quickstarts --context-dir=undertow-servlet

デフォルトで、テストは実行されません。アプリケーションをビルドし、ビルドの一部としてテストを実行するには、以下のコマンドのようにデフォルトの MAVEN_ARGS を上書きします。

$ oc new-app redhat-openjdk18-openshift~<git_repo_URL> --context-dir=<context-dir> --build-env='MAVEN_ARGS=-e -Popenshift -Dcom.redhat.xpaas.repo.redhatga package'

Java プロジェクトが複数の Maven モジュールで構成される場合、アーティファクトの出力ディレクトリーを明示的に指定すると便利です。Maven プロジェクトがアーティファクトを出力するディレクトリーを指定すると、S2I ビルドがこれらを取得できるようになります。

ビルドするモジュールおよびアーティファクトの出力ディレクトリーを指定するには、以下のコマンドを使用します。

$ oc new-app redhat-openjdk18-openshift~<git_repo_URL> --context-dir=<context-dir> --build-env='ARTIFACT_DIR=relative/path/to/artifacts/dir' --build-env='MAVEN_ARGS=install -pl <groupId>:<artifactId> -am'

2.2.8. バイナリーアーティファクトからのビルドおよびデプロイ

Java S2I ビルダーイメージは、指定するバイナリーアーティファクトを使用してアプリケーションをビルドするために使用できます。これを実行するには、最初に oc new-build コマンドを使用して新規のバイナリービルドを作成します。

$ oc new-build --name=<application-name> redhat-openjdk18-openshift --binary=true

次に、oc start-build コマンドを使用してビルドを開始し、ローカルマシンでバイナリーアーティファクトへのパスを指定します。

$ oc start-build <application-name> --from-dir=/path/to/artifacts --follow

最後に、アプリケーションを作成するために oc new-app コマンドを使用します。

$ oc new-app <application-name>

2.2.9. 追加情報およびサンプル

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.