付録A S2I スクリプトと Maven
Red Hat JBoss Web Server for OpenShift イメージには、S2I スクリプト と Maven が含まれています。
A.1. OpenShift の Maven アーティファクトリーポジトリミラーと JWS リンクのコピーリンクがクリップボードにコピーされました!
Maven リポジトリーには、プロジェクト Java アーカイブ (JAR) ファイル、ライブラリー JAR ファイル、プラグイン、またはその他のプロジェクト固有のアーティファクトなど、ビルドアーティファクトと依存関係が保持されます。Maven リポジトリーは、source-to-image (S2I) ビルドの実行中にアーティファクトをダウンロードできる場所も定義します。Maven Central Repository の使用に加えて、ローカルのカスタムリポジトリー (mirror) もデプロイします。
ローカルミラーには、次の利点があります。
- 地理的に近く、高速な同期ミラーを使用できる
- リポジトリーコンテンツの制御が強化される
- パブリックサーバーやリポジトリーに依存することなく、さまざまなチーム (開発者および継続的インテグレーション (CI)) 間でアーティファクトを共有できる
- ビルド時間が改善される
Maven リポジトリーマネージャー はミラーへのローカルキャッシュとして機能できます。リポジトリーマネージャーがすでにデプロイされていて、指定された URL の場所で外部からアクセスできる場合、S2I ビルドはこのリポジトリーを使用できます。MAVEN_MIRROR_URL 環境変数をアプリケーションのビルド設定に追加することで、内部 Maven リポジトリーを使用できます。
A.1.1. 新しいビルド設定に内部 Maven リポジトリーを使用する リンクのコピーリンクがクリップボードにコピーされました!
oc new-app コマンドまたは oc new-build コマンドで --build-env オプションを指定することにより、MAVEN_MIRROR_URL 環境変数をアプリケーションの新しいビルド設定に追加できます。
手順
以下のコマンドを入力します。
$ oc new-app \ https://github.com/web-servers/tomcat-websocket-chat-quickstart.git#main \ --image-stream=jboss-webserver58-openjdk8-tomcat9-openshift-ubi8:latest \ --context-dir='tomcat-websocket-chat' \ --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \ --name=jws-wsch-app注記上記のコマンドは、リポジトリーマネージャーがすでにデプロイされており、
http://10.0.0.1:8080/repository/internal/でアクセスできることを前提としています。
A.1.2. 既存のビルド設定に内部 Maven リポジトリーを使用する リンクのコピーリンクがクリップボードにコピーされました!
oc env コマンドでビルド設定の名前を指定することにより、アプリケーションの既存のビルド設定に MAVEN_MIRROR_URL 環境変数を追加できます。
手順
MAVEN_MIRROR_URL変数を必要とするビルド設定を特定します。$ oc get bc -o name上記のコマンドは、次のタイプの出力を生成します。
buildconfig/jws注記前の例では、jws はビルド設定の名前です。
MAVEN_MIRROR_URL環境変数をbuildconfig/jwsに追加します。$ oc set env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updatedビルド設定が更新されたことを確認します。
$ oc set env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/-
oc start-buildを使用したアプリケーションの新規ビルドのスケジュール
アプリケーションのビルドプロセス中に、Maven の依存関係は、デフォルトのパブリックリポジトリーからではなく、リポジトリーマネージャーからダウンロードされます。ビルドプロセスが完了すると、ビルドプロセス中に取得および使用されるすべての依存関係がミラーに含まれます。