我使用io.fabric8:docker-maven-plugin从maven构建docker映像。
我希望容器像这样运行:
java -jar -Dspring.profiles.active = prod /maven/myapp-1.4.3.jar
java -jar -Dspring.profiles.active = dev /maven/myapp-1.4.3.jar
所以我实际上希望图像传递-Dspring.profiles.active = $ SPRING_PROFILES_ACTIVE,并且该变量将在启动容器时通过docker run传递:
docker run --env SPRING_PROFILES_ACTIVE = prod
但是,看起来容器运行了以下命令:
java -jar -Dspring.profiles.active = $ SPRING_PROFILES_ACTIVE /maven/myapp-1.4.3.jar
并且$ SPRING_PROFILES_ACTIVE不替换为env变量。
pom.xml:
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.31.0</version>
<extensions>true</extensions>
<configuration>
<verbose>true</verbose>
<images>
<image>
<name>${docker.registry}/${project.artifactId}</name>
<build>
<from>java:8-jdk-alpine</from>
<tags>
<tag>${project.version}</tag>
<tag>latest</tag>
</tags>
<entryPoint>
<exec>
<args>java</args>
<args>-jar</args>
<!--<args>-Dspring.profiles.active=$SPRING_PROFILES_ACTIVE</args>-->
<args>/maven/${project.artifactId}-${project.version}.jar</args>
</exec>
</entryPoint>
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
</build>
</image>
</images>