Spring启动docker mount共享logbackconfiguration文件

我有一个微型服务架构的春季启动应用程序。 像10弹簧启动容器运行。

加载我打算做的logback.xml的设置看起来像这样。 的logback-XML

当我启动容器时,如何在弹簧引导embedded式jar /容器中装载和加载logback.xml。

我的想法是这样的。

这将运行春季启动应用程序确定。

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/ 

更多信息

我正在使用从官方spring引导中获取的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> 

简短的问题是..

如何使多个Spring Boot Docker容器装载并共享同一个logback.xml文件。

我build议使用Dockerfile命令将logback.xml文件放在图像中:

 ADD logback.xml container-app-dir/ 

如果你不想把你的xmlconfiguration放在Dockerfile / image中,你可以使用在所有容器之间共享的命名卷 ,下面是很好的信息: Docker Compose – 在多个容器之间共享命名卷所以你可以在运行时通过使wget)并放置到共享的命名卷。