【发布时间】:2017-11-18 09:18:08
【问题描述】:
我有包含以下信息的 Docker Compose 文件 图片:${DOCKER_REGISTRY}/mdm-elasticsearch:${SEARCH_IMAGE_VERSION}
我想用来自 POM 或命令的值设置 SEARCH_IMAGE_VERSION mvn clean install -D {版本号}
【问题讨论】:
标签: java maven docker-compose maven-plugin
我有包含以下信息的 Docker Compose 文件 图片:${DOCKER_REGISTRY}/mdm-elasticsearch:${SEARCH_IMAGE_VERSION}
我想用来自 POM 或命令的值设置 SEARCH_IMAGE_VERSION mvn clean install -D {版本号}
【问题讨论】:
标签: java maven docker-compose maven-plugin
您必须配置Resources to have filtering set to true 并包含您的文件。例如,如果您的 Docker Compose 文件位于 src/main/docker/docker-compose.yml,您可以在 pom.xml 中进行以下配置:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/docker</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
...
</project>
然后你可以直接在你的pom中properties下指定参数比如
<project>
...
<properties>
<DOCKER_REGISTRY>...</DOCKER_REGISTRY>
<SEARCH_IMAGE_VERSION>...</SEARCH_IMAGE_VERSION>
</properties>
...
</project>
或者直接在命令行:
mvn clean install -DDOCKER_REGISTRY=... -DSEARCH_IMAGE_VERSION=...
当您运行mvn 命令时,每个用${...} 表示的变量都将被过滤并替换为它们在 pom 或命令行中配置的值。默认情况下,输出文件将复制到target/classes/docker-compose.yml
如果你想指定另一个输出目录,你应该配置一个Resources Plugin执行并指定outputDirectory如:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-docker-compose</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/docker</outputDirectory>
<resources>
<resource>
<directory>src/main/docker</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
请注意,这将过滤配置目录中的每个文件。如果您只需要过滤某些文件,请使用include and exclude parameters。
【讨论】: