我有一个通过maven构建的项目,它是节点应用程序的dockerized项目。
我希望能够基于Maven构建参数来自定义我的CMD / EntryPoint。
我知道,当我们执行docker run并为其提供参数时,它将被接受并且工作正常。 但是我想从maven命令行做同样的事情。
有没有办法让docker run知道在maven命令行中传递的参数? 甚至更好的是,我可以编辑dockerfile并读取maven的命令行参数并在dockerfile中使用ENTRYPOINT吗?
预先感谢, 水上
答案 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”,“目标文件夹中脚本的路径”]
此脚本中的//应该是您要使用的命令