1

我使用 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 不会被环境变量替换。

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>
4

0 回答 0