第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 スクリプトを実行するデフォルトの S2I run スクリプトが使用されます。

    イメージが 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