2017-09-14 13 views
1

ドッカーコンテナー内で実行されているJavaアプリケーションがあります。私はこのコンテナをECSクラスタに展開しました。私はJMXポートを公開したいので、そのマシンにインストールされているCollectDエージェントを使ってJVM統計を収集することができます。ドッカー内のJMXポートを公開するECSクラスターで実行されているコンテナー

は、JVMのparams私は私のJavaアプリで指定されていることは、私は私が非ドッキングウィンドウ環境では、このアプリケーションを実行する場合、このJMXポートに接続することができる午前

JAVA_OPTS="-Dspring.config.location=classpath:/base/ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=10.0.7.118 

です。しかし、私はDockerで同じことをすることができません。

私はこのポートを外部の世界に公開できるように、私のタスク定義にポートマッピングを与えました。私が知っている、もし私がドッカーの実行コマンドを使ってこのドッカーを実行していたのであれば、ポートマッピングに-p paramを指定することはできましたが、このイメージを展開するECSクラスタでこのアプリケーションを実行しているので、ですから、タスク定義によって提供されるポートマッピングに頼らざるを得ません。

TaskDefnition

  "ContainerDefinitions": [ 
       { 
        "Name": "MyApplication", 
        "Cpu": "2048", 
        "Essential": "true", 
        "Image": "location of the image", 
        "Memory": "8192", 
        "MemoryReservation": "4096", 
        "Environment": [ 
         { 
          "Name": "Test", 
          "Value": { 
           "Fn::GetAtt": [ 
            "SomeAttrib", 
            "SomeAccessKey" 
           ] 
          } 
         } 
        ], 
        "PortMappings": [ 
         { 
          "HostPort": "8080", 
          "ContainerPort": "8080" 
         }, 
         { 
          "HostPort": "8008", 
          "ContainerPort": "8008" 
         } 
        ] 
       } 
+0

タスク定義を投稿する –

+0

質問を更新しました –

答えて

0

は、様々なリンクを経由した後、私は私の問題への解決策を見つけました。最後に、-Dcom.sun.management.jmxremote.local.only = trueを追加するこの

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.rmi.port=8008 -Dcom.sun.management.jmxremote.local.only=true 

のようなJVMのparams外観は私のためのトリックを行いました。要件に応じて、trueまたはfalseに設定できます。

関連する問題