maven构建的运行了节点应用程序的dockerized项目

时间:2020-08-26 19:26:55

标签: docker maven npm

我有一个通过maven构建的项目,它是节点应用程序的dockerized项目。

我希望能够基于Maven构建参数来自定义我的CMD / EntryPoint。

我知道,当我们执行docker run并为其提供参数时,它将被接受并且工作正常。 但是我想从maven命令行做同样的事情。

有没有办法让docker run知道在maven命令行中传递的参数? 甚至更好的是,我可以编辑dockerfile并读取maven的命令行参数并在dockerfile中使用ENTRYPOINT吗?

预先感谢, 水上

2 个答案:

答案 0 :(得分:0)

基于this,您可以使用maven-resources-plugin在构建docker文件之前使用maven中设置的值替换const stack<string>&的实例。

示例:

${...}

这假设您的docker文件位于<plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>filter-dockerfile</id> <phase>generate-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}</outputDirectory> <resources> <resource> <directory>src/main/docker</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> 路径下。替换后的docker文件将复制到src/main/docker/路径上。

或者基于this注释,您可以将参数传递给docker文件。

示例:

在您的maven docker插件上

${project.build.directory}

然后在docker文件上以ARG的形式访问这些属性

<configuration>
  <buildArgs>
    <artifactId>${project.artifactId}</artifactId>
    <groupId>${project.groupId}</groupId>
  </buildArgs>
</configuration>

希望此帮助回答您的问题。

答案 1 :(得分:0)

感谢您的回复

我在maven中使用资源过滤来解决我的问题:

Argument of type 'FormData' is not assignable to parameter of type 'string | string[][] | Record<string, string> | URLSearchParams | undefined'.
  Property 'sort' is missing in type 'FormData' but required in type 'URLSearchParams'.(2345)
input.tsx(6, 18): 'sort' is declared here.

添加到maven命令:“ resources:resources -Duserdefvariable = value”

//此设置在运行mvn命令后会在目标文件夹中生成一个文件,在该文件中,将使用用户给定的值注入变量。

现在在Dockerfile中,您可以改为输入命令来运行文件: CMD [“ sh”,“目标文件夹中脚本的路径”]

此脚本中的

//应该是您要使用的命令

相关问题