【问题标题】:How to set value from Maven to Docker Compose File如何将值从 Maven 设置为 Docker Compose File
【发布时间】: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


    【解决方案1】:

    您必须配置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。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2019-12-30
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2023-01-24
      • 2019-08-07
      相关资源
      最近更新 更多