第5章 既知の問題
本セクションでは、Red Hat ビルドの Quarkus 1.3 の既知の問題について記載しています。
-
smallrye-reactive-messagingエクステンションを追加すると、コードで Reactive API を使用していない場合でも、Quarkus を閉じる際に ReactiveX に関する警告メッセージが表示されます。詳細は、「Red Hat build of Quarkus warns that io.vertx.reactivex.core.Vertx is deprecated」 を参照してください。 quarkus-container-image-s2エクステンションは通常、quarkus-openshiftエクステンションを介して間接的に使用され、s390x アーキテクチャーに推奨される Red Hat OpenJ9 イメージを、run-java.shスクリプトが含まれていないかのように扱います。これは生成されたopenshift.ymlファイルに影響します。イメージが
run-java.shスクリプトを使用する場合、コンテナーの定義には複数の環境変数のみが含まれます。コンテナーで実行される必要があるコマンドは含まれません。代わりに、run-java.shスクリプトを実行するデフォルトの S2Irunスクリプトが使用されます。イメージが
run-java.shスクリプトを使用しない場合、コンテナー定義にはコンテナーで実行される必要のあるjavaコマンドが含まれます。これらのシナリオで 1 つ異なるのは、
run-java.shスクリプトが、現在の作業ディレクトリーをアプリケーション JAR ファイルが置かれているディレクトリー (通常は/deployments) へ変更する点です。これは、application.properties設定ファイルを使用して ConfigMap をコンテナーファイルシステムにマウントする際に重要となります。run-java.shスクリプトの場合、通常は ConfigMap を/deployments/configディレクトリーにマウントする必要があります。他のイメージの場合は、ConfigMap をイメージが定義するデフォルトの作業ディレクトリーにマウントする必要があります。注記この問題は、s390x アーキテクチャーに推奨される Red Hat OpenJ9 イメージを使用するすべてのアプリケーションへの影響はありません。
原因
quarkus-container-image-s2iエクステンションには、run-java.shスクリプトが含まれる既知のイメージの一覧があります。その他のイメージは、run-java.shスクリプトが含まれていないかのように処理されます。この問題は今後のリリースで修正される予定です。回避策
お使いのアプリケーションが現在の作業ディレクトリーの問題の影響を受ける場合、Pod 定義でコンテナーの現在の作業ディレクトリーを定義できます。これにより、イメージで定義されたデフォルトの作業ディレクトリーが上書きされます。
quarkus-openshiftエクステンションを使用してopenshift.ymlファイルを生成する場合は、以下の設定プロパティーを使用します。quarkus.openshift.working-dir=/deployments特に
application.properties設定ファイルで ConfigMap をマウントする際に、お使いのアプリケーションが現在の作業ディレクトリーの問題の影響を受ける場合は、別のオプションとして、ConfigMap を特定のディレクトリーにマウントします。quarkus-openshiftエクステンションを使用する場合は、イメージが定義したデフォルトの作業ディレクトリーが/home/jbossであると想定し、以下の設定プロパティーを使用します。quarkus.openshift.mounts.<mount name>.path=/home/jboss/config