2017-03-02 7 views
0

ので、私はSpringBootApplicationを構築していると私は現在、YMLで以下の設定を持っていると:CloudFoundry manifest.ymlのenv変数などのオブジェクト

my: 
    caller: 
     - id: someId 
     url: someUrl 
     context: someContext 
     - id: someId2 
     url: someUrl2 
     context: someContext2 

だから、基本的には、オブジェクトのリストです(私はPOJOを作成しました3つのフィールドを持つ)。これらのオブジェクトは@Componentで@ConfigurationProperties(接頭辞= "my")を持ち、POJOのListは@NestedConfigurationpropertyである別のクラスのListとして表されます。 これまでのところすべてが完璧に動作していますが、Springはapplication.ymlからオブジェクトを構築し、Listをうまく埋めますが、CloudFoundryでこの設定をシミュレートすることはできません。私はcloudfoundryのために別のmanifest.ymlを使用していますが、私はこの構造をマニフェストのenv部分に配置しようとしていますが、動作していません(Cloudfoundryは無視します)。それは(例えばev_my_caller_idのために)動作しますが、その方法は私が唯一の1のオブジェクトではなく、リスト全体を構築することができ、私はCloudFoundryで何かを発見していない

env: 
    my: 
    caller: 
     - id: someId 
     url: someUrl 
     context: someContext 
     - id: someId2 
     url: someUrl2 
     context: someContext2 

私はシンプルなラインで知っている: それは次のようになりますマニフェストから複数のオブジェクトを構築する方法に関するdoc 誰かが何か考えているなら、本当に感謝します!

答えて

0

Cloud Foundry cliのmanifest.ymlファイルのenvブロックには、特定の形式があります。あなたは任意の構造を使用することはできませんし、それが動作することを期待しています。

形式は次のとおりです。

env: var_name_1: val_1 var_name_2: val_2

は、より多くの詳細についてはドキュメントを参照してください - >https://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#env-block

あなたが正しい名前でENV変数を設定した場合、あなたは春の一定の値を上書きするためにそれを使用することができます。 Spring Bootの外部設定サポートに感謝します。多分それはあなたのためのオプションになるでしょう。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

例:MY_PROPERTY=1234はapplication.propertiesでmy.propertyをオーバーライドします。

0

ないあなたがやろうとしているが、あなたはこのような何かを試すことができますかわから:

env: 
    test: '{ whatever complex object/variables }' 

例えば

env: 
    test: '{ variable = value, variable2 = value2 }' 
1

あなたはダニエルが提供Spring Boot external config linkで述べたSPRING_APPLICATION_JSON環境変数を使用することができます。

env: 
    SPRING_APPLICATION_JSON: '{ "my": { "caller": [{ "id": "someId", "url": "someUrl", "context": "someContext" }, { "id": "someId2", "url": "someUrl2", "context": "someContext2" }]}}' 
:このような何かをしたいと思い、あなたの場合は

関連する問題