検索

11.11. S2I

download PDF

イメージには S2I スクリプトと Maven が含まれます。現在 Maven は、OpenShift 上の JBoss EAP ベースのコンテナー (または関連/ 子孫イメージ) にデプロイされるはずのアプリケーションのビルドツールとしてのみサポートされます。

現在、WAR デプロイメントのみがサポートされます。

11.11.1. カスタム設定

イメージのカスタム設定ファイルを追加することが可能です。configuration/ ディレクトリーに置かれたすべてのファイルは EAP_HOME/standalone/configuration/ にコピーされます。たとえば、イメージで使用されるデフォルトの設定をオーバーライドするには、カスタムの standalone.xmlconfiguration/ ディレクトリーに追加します。このようなデプロイメントの 例を参照 してください。

11.11.1.1. カスタムモジュール

カスタムモジュールを追加することが可能です。modules/ ディレクトリーからのすべてのファイルは EAP_HOME/modules/ にコピーされます。このようなデプロイメントの 例を参照 してください。

11.11.2. デプロイメントアーティファクト

デフォルトでは、ソースの target ディレクトリーからのアーティファクトがデプロイされます。異なるディレクトリーからデプロイするには、BuildConfig 定義の ARTIFACT_DIR 環境変数を設定します。ARTIFACT_DIR はコンマ区切りのリストです。例: ARTIFACT_DIR=app1/target,app2/target,app3/target

11.11.3. アーティファクトリポジトリーミラー

Maven のリポジトリーは、すべてのプロジェクト JAR、ライブラリー JAR、プラグイン、またはその他のプロジェクト固有のアーティファクトなど、さまざまな種類のビルドアーティファクトおよび依存関係を保持します。また、S2I ビルドの実行中にアーティファクトのダウンロード元となる場所も指定します。組織では、中央リポジトリーを使用する他に、ローカルカスタムミラーリポジトリーをデプロイすることが一般的です。

ミラーを使用する利点は次のとおりです。

  • 地理的に近く、高速な同期ミラーを使用できる。
  • リポジトリーの内容をより良く制御できる。
  • パブリックサーバーおよびリポジトリーに依存することなく、異なるチーム (開発者、CI) 全体でアーティファクトを共有できる。
  • ビルド時間が改善されました。

多くの場合で、リポジトリーマネージャーはミラーへのローカルキャッシュとして機能できます。リポジトリーマネージャーがすでにデプロイされ、https://10.0.0.1:8443/repository/internal/ で外部アクセス可能な場合、以下のように MAVEN_MIRROR_URL 環境変数をアプリケーションのビルド設定に提供すると S2I ビルドはこのマネージャーを使用することができます。

  1. MAVEN_MIRROR_URL 変数を適用するビルド設定の名前を特定します。

    oc get bc -o name
    buildconfig/eap
  2. eap のビルド設定を MAVEN_MIRROR_URL 環境変数で更新します。

    oc env bc/eap MAVEN_MIRROR_URL="https://10.0.0.1:8443/repository/internal/"
    buildconfig "eap" updated
  3. 設定を確認します。

    oc env bc/eap --list
    # buildconfigs eap
    MAVEN_MIRROR_URL=https://10.0.0.1:8443/repository/internal/
  4. アプリケーションの新しいビルドをスケジュールします。
注記

アプリケーションのビルド中、Maven 依存関係はデフォルトのパブリックリポジトリーではなく、リポジトリーマネージャーからプルされることを確認できます。またビルドの完了後、ビルド中に取得および使用されたすべての依存関係がミラーに追加されたことが確認できます。

11.11.3.1. セキュアなアーティファクトリポジトリーミラー URL

Maven リポジトリーを介した "中間者攻撃" を防ぐために、JBoss EAP ではアーティファクトリポジトリーのミラー URL にセキュアな URL を使用する必要があります。

URL は、安全な http ("https") とセキュアなポートを指定する必要があります。

デフォルトでは、セキュアでない URL を指定すると、エラーが返されます。この動作は、-Dinsecure.repositories=WARN プロパティーを使用して上書きできます。

11.11.4. スクリプト

run
このスクリプトは、standalone-openshift.xml 設定で JBoss EAP を設定および開始する standalone.xml スクリプトを使用します。
assemble
このスクリプトは Maven を使用してソースをビルドして、パッケージ (WAR) を作成し、それを EAP_HOME/standalone/deployments ディレクトリーに移動します。

11.11.5. カスタムスクリプト

JBoss EAP を起動する前に、Pod の起動時に実行するカスタムスクリプトを追加できます。

Pod を起動する際に実行するのに有効なスクリプトを追加できます。これには CLI スクリプトが含まれます。

JBoss EAP をイメージから起動するときにスクリプトを含めるには、以下の 2 つのオプションを利用できます。

  • postconfigure.sh として実行される configmap をマウントします。
  • 指定したインストールディレクトリーに install.sh スクリプトを追加します。

11.11.5.1. カスタムスクリプトを実行するための configmap のマウント

ランタイム時にカスタムスクリプトを既存のイメージ (つまり、すでにビルドされたイメージ) にマウントする際に configmap をマウントします。

configmap をマウントするには、以下を実行します。

  1. postconfigure.sh に追加する内容で configmap を作成します。

    たとえば、プロジェクトの root ディレクトリーに extensions というディレクトリーを作成して、スクリプト postconfigure.shextensions.cli を含め、次のコマンドを実行します。

    $ oc create configmap jboss-cli --from-file=postconfigure.sh=extensions/postconfigure.sh --from-file=extensions.cli=extensions/extensions.cli
  2. configmap をデプロイメントコントローラー (dc) 経由で Pod にマウントします。

    $ oc set volume dc/eap-app --add --name=jboss-cli -m /opt/server/extensions -t configmap --configmap-name=jboss-cli --default-mode='0755' --overwrite

postconfigure.sh の例

#!/usr/bin/env bash
set -x
echo "Executing postconfigure.sh"
$JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/extensions.cli

extensions.cli の例

embed-server --std-out=echo  --server-config=standalone.xml
:whoami
quit

11.11.5.2. install.sh を使用したカスタムスクリプトの実行

ビルド時にイメージの一部としてスクリプトを含める場合は、install.sh を使用しします。

install.sh を使用してカスタムスクリプトを実行するには、以下を実行します。

  1. s2i ビルド中に使用されるプロジェクトの git リポジトリーで、.s2i というディレクトリーを作成します。
  2. s2i ディレクトリー内に、以下の内容を含む環境ファイルを追加します。

    $ cat .s2i/environment
    CUSTOM_INSTALL_DIRECTORIES=extensions
  3. extensions というディレクトリーを作成します。
  4. extensions ディレクトリーで、以下のように内容で postconfigure.sh ファイルを作成します (プレースホルダーコードを環境に適したコードに置き換えます)。

    $ cat extensions/postconfigure.sh
    #!/usr/bin/env bash
    echo "Executing patch.cli"
    $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/some-cli-example.cli
  5. extensions ディレクトリーで、以下のような内容の install.sh というファイルを作成します (プレースホルダーコードを環境に適したコードに置き換えます)。

    $ cat extensions/install.sh
    #!/usr/bin/env bash
    set -x
    echo "Running $PWD/install.sh"
    injected_dir=$1
    # copy any needed files into the target build.
    cp -rf ${injected_dir} $JBOSS_HOME/extensions

11.11.6. 環境変数

s2i build コマンドに指定する環境変数によって、ビルドの実行方法が異なります。指定できる環境変数は次のとおりです。

表11.7 S2I 環境変数
変数名説明

ARTIFACT_DIR

このディレクトリーからの .war.ear、および .jar ファイルが deployments/ ディレクトリーにコピーされます。

値の例: target

ENABLE_GENERATE_DEFAULT_DATASOURCE

(オプション)値が true の場合、サーバーはデフォルトデータソースでプロビジョニングされます。それ以外の場合は、デフォルトのデータソースは含まれません。

GALLEON_PROVISION_LAYERS

(オプション)S2I プロセスに対し、指定されたレイヤーをプロビジョニングするよう指示します。この値は、プロビジョニングするレイヤーのコンマ区切りのリストです。これには、ベースレイヤーと任意の数のデコレーターレイヤーが含まれます。

値の例: jaxrs

GALLEON_PROVISION_CHANNELS

これは JBoss EAP チャネルマニフェストのコンマ区切りリストです。JBoss EAP チャネルマニフェストは、groupid:artifactId:[version] によって特定されます。

注記

バージョンは省略可能です。省略すると、最新のチャネルマニフェストが取得されます。JBoss EAP 8.0 の場合は、org.jboss.eap.channels:eap-8.0 チャネルが使用されます。

GALLEON_PROVISION_FEATURE_PACKS

S2I イメージのカスタム Galleon 機能パックを指定する環境変数をビルドします。例: org.jboss.eap:wildfly-ee-galleon-pack:[version]org.jboss.eap.cloud:eap-cloud-galleon-pack:[version]

注記

GALLEON_PROVISION_CHANNELS=org.jboss.eap.channels:eap-8.0 を設定する場合、機能パックのバージョンは必要ありません。

HTTP_PROXY_HOST

Maven が使用する HTTP プロキシーのホスト名または IP アドレス。

値の例: 192.168.1.1

HTTP_PROXY_PORT

Maven が使用する HTTP プロキシーの TCP ポート。

値の例: 8080

HTTP_PROXY_USERNAME

HTTP_PROXY_PASSWORD と指定された場合、HTTP プロキシーのクレデンシャルを使用します。

値の例: myusername

HTTP_PROXY_PASSWORD

HTTP_PROXY_USERNAME と指定された場合、HTTP プロキシーのクレデンシャルを使用します。

値の例: mypassword

HTTP_PROXY_NONPROXYHOSTS

指定された場合、設定された HTTP プロキシーはこれらのホストを無視します。

値の例: some.example.org|*.example.net

MAVEN_ARGS

ビルド中に Maven に指定された引数をオーバーライドします。

値の例: -e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga package

MAVEN_ARGS_APPEND

ビルド中に Maven に指定されたユーザー引数を追加します。

値の例: -Dfoo=bar

MAVEN_MIRROR_URL

設定する Maven ミラー/ リポジトリーマネージャーの URL。

値の例: https://10.0.0.1:8443/repository/internal/

指定した URL はセキュアである必要があることに注意してください。詳細は、セキュアなアーティファクトリポジトリーミラー URL を参照してください。

MAVEN_CLEAR_REPO

任意で、ビルド後にローカル Maven リポジトリーを消去します。

イメージに存在するサーバーがローカルキャッシュと強く結合されている場合には、キャッシュが削除されず、警告が表示されます。

値の例: true

APP_DATADIR

定義された場合、データファイルのコピー元であるソースのディレクトリー。

値の例: mydata

DATA_DIR

$APP_DATADIR からのデータがコピーされるイメージのディレクトリー。

値の例: EAP_HOME/data

注記

詳細は、OpenShift Container Platform での JBoss EAP アプリケーションのビルドと実行 を参照してください。OpenShift では、JBoss EAP for OpenShift イメージに含まれる Maven と S2I スクリプトが使用されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.