带有两个罐子的docker中的Spring Boot

时间:2019-02-07 06:53:12

标签: spring spring-boot docker

任务是扩展现有的Spring Boot应用程序并覆盖某些Bean并将其部署在Spring Boot中。

使用科特林语。 所以我有Spring Boot应用程序(APP-A)

    @SpringBootApplication
    open class MyApp { 
        ... //start staff here 
    }

我有一个模块(MODULE-B),该模块通过依赖注入扩展了一些现有的逻辑

open class ExtensionModule { 
//... extension logic is here 
}

对于此模块,使用弹簧自动配置。所以应该在弹簧容器中注册

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.ExtensionModule

当我在MODULE-B上的pom.xml(APP-A)中具有依赖性时,一切正常。 我的目标是在pom.xml中构建不依赖的docker映像,因此在这种情况下,APP-A对MODULE-B一无所知,但逻辑将得到扩展,就像使用基于旧的spring容器classpath-xml的方法一样 我测试了下一个Dockerfile

FROM openjdk:8-jre

ADD app-a.jar /usr/share/jvmservice/app-a.jar
ADD module-b.jar /usr/share/jvmservice/module-b.jar

ENTRYPOINT exec /usr/bin/java $JAVA_OPTS -jar /usr/share/jvmservice/app-a.jar

结果是成功启动了app-a,但未应用对module-b的更改。 是否可以在一个Spring容器中由两个jar组成docker镜像,而无需显式依赖?

1 个答案:

答案 0 :(得分:1)

您需要将module-b.jar添加到类路径,请使用以下命令进行操作

FROM openjdk:8-jre

COPY app-a.jar /usr/share/jvmservice/app-a.jar
COPY module-b.jar /usr/share/jvmservice/ext/module-b.jar

ENTRYPOINT exec /usr/bin/java $JAVA_OPTS -Dloader.path="/usr/share/jvmservice/ext/" -jar /usr/share/jvmservice/app-a.jar

有关更多信息,请参见Launching Executable Jars