使用 Docker 容器化的 Spring Boot Maven 应用程序 - 基于配置文件标志构建 WAR

问题描述

我有一个 Spring Boot 应用程序,它使用配置文件“application-dev.properties”和“application-test.properties”。项目使用Docker容器化,看下面的代码

运行 'RUN mvn package' 有效,但我想基于其中一个配置文件进行构建。有没有办法实现这一目标?因为“RUN mvn package -Dmaven.test.skip=true -P test”似乎不起作用..

 FROM maven:3.3.9-jdk-8-alpine as build-env
 copY pom.xml /tmp/
 copY settings.xml /root/.m2/settings.xml
 copY src /tmp/src/

 workdir /tmp/
 RUN mvn package -Dmaven.test.skip=true -P test

 FROM tomcat:8.0
 copY --from=build-env /tmp/target/cbm-server-0.0.1-SNAPSHOT.war $CATALINA_HOME/webapps/cbm- server.war

 EXPOSE 8009
 EXPOSE 8080
 CMD ["catalina.sh","run"]

解决方法

您需要为运行时阶段提供配置文件。 您可以使用环境变量来实现。

ENV JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=test"