2017-09-28 4 views
1

webappをOpenShift v2からOpenShift Proに移行しています。これは通常のJava Tomcatアプリです。OpenShiftマイグレーション - CONVファイル内のENV変数の前に置き換えられていません

OpenShift v2で私のWebアプリケーションは、追加の文書ベースは次のようにserver.xmlで指定した

 <Context docBase="${OPENSHIFT_DATA_DIR}/documents" path="/documents" /> 

展開OPENSHIFT_DATA_DIR変数の値に置き換えた環境時:は/ opt /アプリルート/データ

私はOpenShift Proに同等の設定をしましたが、展開は失敗しました。調査の結果、私は、ログにこれを見た:

Caused by: java.lang.IllegalArgumentException: The main resource set specified [/deployments/${OPENSHIFT_DATA_DIR}/documents] is not valid 

私は単にハード、このようなserver.xmlのは/ opt /アプリ-ルート/データをコード化され、これを克服するために:

<Context docBase="/opt/app-root/data/documents" path="/documents" /> 

次は展開が機能しました。

私の質問は以下のとおりです。

が、これは展開プロセスのバグですか?

環境変数を構成ファイルに注入するのは間違っていますか?

もしそうなら、正しい方法はありますか?

任意の助けをいただければ幸い、私はハードなものをコーディング好きではない、それは常にいくつかの将来の日付であなたを噛まないように戻ってくる... V2にある設定された特別な環境変数の

答えて

0

なしV3に設定します。 V3に関しては、永続ボリュームがマウントされている標準的な場所もありません。マウントする場所はあなた次第です。変数が展開されているとは表示されないということは、単にファイルを処理するものが原因である可能性があります。そのような環境変数が存在しない場合は変数参照として残ります。これは、V3の下で置換がまだ発生しており、V2について特別なものではなかったと仮定しています。

環境変数を無効にしたい場合、または環境変数を必要とするコードを変更しないようにする場合は、デプロイメント設定で環境変数を設定するか、.s2i/environmentファイルをソースコードのレポを作成し、代わりに環境設定を追加してください。 .s2i/environmentのファイルは、実際にビルドされるとアプリケーションイメージの一部になります。必要に応じて、後でデプロイメント設定の環境変数で上書きすることができます。

+0

グラハム氏に感謝します。問題は環境変数ではなく、その置き換えです。 $ {OPENSHIFT_DATA_DIR}は正しく置き換えられず、 '/ deployments/$ {OPENSHIFT_DATA_DIR}'と置き換えられました。元のテキストの前に '/ deployments /'があることに注意してください。私はちょうどこのように指定された環境変数を持つ私のシステム上のlog4j.xmlファイルを見ました:$ {env:OPENSHIFT_DATA_DIR}だから私は後で試してみるつもりです... – Lyndon

+0

そして私は$ {env :OPENSHIFT_DATA_DIR}も置き換えられませんでした。私はログにこれを持っています:指定された主なリソースセット[/ deployments/$ {env:OPENSHIFT_DATA_DIR}/temp]は無効です。 – Lyndon

0

環境変数を設定する場合は、thisthis (s2i script section)を確認してください。

基本的には、.s2i/binフォルダをコードベースに導入する必要があります。このフォルダは、複数のスクリプトセットをオーバーライドしてカスタムコードを導入することができます。これはV2のアクションフックに似ています。

ここでは実際に実行する前にsetting environment variableを導入したいと思うかもしれません。例えば以下のように注意する

.s2i/bin/run script 

#!/bin/bash 
echo "Set environment variable before running application" 
exec /usr/libexec/s2i/run 

いくつかのこと:あなたのスクリプトを導入することにより

  • 、それは完全に上書きされます。コードの後に​​標準実行スクリプトを呼びたい場合は、そのスクリプトを呼び出す必要があります。例えば最後の行に/usr/libexec/s2i/run

  • デフォルトの実行スクリプトコールは最後の行にする必要があります。それ以降に書かれたことを実行するためにコントロールが戻ってくるとは思わないでください。

+0

ご注意ください。この質問は環境変数の設定ではありません。これは、server.xmlの$ {OPENSHIFT_DATA_DIR}がその値に置き換えられないということです。/ opt/app-root/data – Lyndon

+0

@Lyndonそれは、そのような変数が存在しなかったからです(私はtomcat変数をチェックするだけです)。この変数を実行直前に作成したい場合は、このソリューションを試してみてください。私にお知らせください。 – gyan

+0

OpenShift環境変数OPENSHIFT_DATA_DIRは存在し、作成しました。値は/ opt/app-root/dataです。 docBase = "$ {OPENSHIFT_DATA_DIR}/documents"がdocBase = "/ opt/app-root/data/documents"に変更されることを期待します。しかし、実際にはdocBase = "/ deployments/$ {OPENSHIFT_DATA_DIR}/documents"に変更されました。正面に追加される '/ deployments'に注意してください。これはバグIMHOする必要があります... – Lyndon

関連する問題