2017-11-24 14 views
0

私はマイクロサービスアーキテクチャのスプリングブートアプリケーションを持っています。 10の春のブートコンテナのようなもので実行しています。スプリングブートドッカーマウント共有ログバック設定ファイル

私が目指しているlogback.xmlをロードするための設定は、このようなものです。 logback-xml

コンテナを起動するときに、springback組み込みjar/containerにlogback.xmlをマウントしてロードするにはどうすればよいですか。

私の考えは、このようなものです。

これは、春の起動アプリokを実行します。

docker run -d --name=app1 app_image 

このような何かが、私は、負荷にlogback.xml

docker run -d --name=app1 --volume=/home/host-path/log-back-conig-dir/:/container-app-dir/ app_image 

docker run -d --name=app2 --volume=/home/host-path/log-back-conig-dir/:/container-app-dir/ app_image 

docker run -d --name=app3 --volume=/home/host-path/log-back-conig-dir:/container-app-dir/ 

さらに詳細

を実装するために探しています何私は、公式の春から取らDockerfileの例を使用していていますブート

spring.io/guides/gs/spring-boot-docker

Dockerfile

FROM openjdk:8-jdk-alpine 
VOLUME /tmp 
ARG JAR_FILE 
ADD ${JAR_FILE} app.jar 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 

logback.xmlこの

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <springProperty scope="context" name="springAppName" source="spring.application.name"/> 
    <include resource="org/springframework/boot/logging/logback/base.xml" /> 

    <springProfile name="default,dev,staging"> 
     <logger name="guru.springframework.controllers" level="DEBUG" additivity="false"> 
      <appender-ref ref="CONSOLE" /> 
     </logger> 
    </springProfile> 

    <springProfile name="dev"> 
     <appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
       <level>info</level> 
      </filter> 
      <file>/varlog/log-tracing-demo/build/logs/${springAppName}.log</file> 
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
       <fileNamePattern>/var/log/log-tracing-demo/build/logs/${springAppName}.log.%d{yyyy-MM-dd}</fileNamePattern> 
       <maxHistory>30</maxHistory> 
      </rollingPolicy> 
      <encoder class="net.logstash.logback.encoder.LogstashEncoder" > 
       <includeContext>false</includeContext> 
       <fieldNames> 
        <message>msg</message> 
       </fieldNames> 
       <customFields>{"application_name":"${springAppName}"}</customFields> 
      </encoder> 
     </appender> 
     <root level="info"> 
      <appender-ref ref="CONSOLE" /> 
      <appender-ref ref="stash" /> 
     </root> 
    </springProfile> 
</configuration> 

質問のショートバージョン..です

のように見えます複数のスプリングブートドッカーコンテナを作成して、同じ単一のlogback.xmlファイルをマウントして共有するにはどうすればいいですか?

+0

Dockerファイルにlogback.xmlを追加し、すべてのアプリケーションで同じ設定ファイルを使用できます。ただし、Dockerはすでにログを生成しています。ですから、春のアプリをSTDOUTに記録し、ELKスタックのようなものを使ってすべてのログを1か所に集めることは良い考えです。 –

+0

STDOUTをjsonではなく人間が読めるようにしたい。ファイルに出力されるものはjson形式です... json形式は、私がgrokパーサを書く必要がなく、変更するのが脆弱でないことを意味します。 –

+0

また、libプロジェクトとしてlogback.xmlを作成して、私的artifactoryにアップロードして、アプリプロジェクトに依存関係を追加することもできます。 –

答えて

0

私はDockerfileコマンドを使用して、画像内のlogback.xmlファイルを配置することをお勧め:

ADD logback.xml container-app-dir/ 

あなたはすべての間で共有という名前のボリュームを使用することができますDockerfile /画像であなたのXML設定を配置したくない場合コンテナは、ここで素敵な情報です:Docker Compose - Share named volume between multiple containers 例えば、ランタイムで(wgetを作成することによって)この設定をdonwloadし、名前付き共有ボリュームに配置できます。

関連する問題