当前位置: 首页 > 知识库问答 >
问题:

使用Entrypoint和/或CMD将mvn命令作为docker文件的一部分运行

江光明
2023-03-14
FROM maven:3.3.9-jdk-8-alpine
WORKDIR /app
COPY code /app
WORKDIR /app
ENTRYPOINT ["mvn"]
CMD ["clean test -Dsurefire.suiteXmlFiles=/app/abc.xml"]

有没有办法让这件事。

共有1个答案

丁俊智
2023-03-14

根据文档:“如果使用CMD为ENTRYPOINT指令提供默认参数,则CMD和ENTRYPOINT指令都应使用JSON数组格式指定。”因此,您应该重写CMD,如下所示:

CMD ["clean","test","-Dsurefire.suiteXmlFiles=/app/abc.xml"]

您还可以根据文档将入口点参数化为JSON数组:entrypoint[“mvn”,“clean”,“test”,“-dsurefire.suitexmlfiles=/app/abc。

但是,我建议您将最佳实践与入口点ash-file一起使用。这可以确保更改这些参数不需要重写DockerFile:

>

  • 在code目录中创建一个entrypoint.sh文件。使其可执行。它应该是这样的:

    #!/bin/sh if[“$#”-ne 1]then file=“abc.xml”else file=$1 fi mvn clean test-dsurefire.suitexmlfiles=“/app/$file”

    用entrypoint[“./entrypoint.sh”]替换您的入口点

    将命令替换为cmd[“abc.xml”]

    PS你有“workdir/app”两次。这不是让你失望的,但它是多余的,你可以摆脱它。

  •  类似资料:
    • 我得到的命令不能识别为内部或外部命令。 我已经重启电脑两次了。

    • 问题内容: 当我在netbeans中构建项目时,它显示: 我正在使用JDK 8和Maven 3.3。我的路径系统变量是: 问题答案: 到目前为止,我知道这不是您的 IDE问题 。请检查PATH环境变量中是否正确定义了“ system32”。

    • 我已经在cmd中手动编译了maven,并且成功了。然而,当我试图管理詹金斯的工作时,它说 詹金斯控制台输出: 在工作区C:\Program Files(x86)\Jenkins\workspace\atmosphere3中构建 吉特。exe rev parse——在工作树中#timeout=10从远程Git存储库Git获取更改。exe配置远程。起源网址https://github.com/g0t4

    • 问题内容: 我正在尝试构建自定义的tcserver docker映像。但是我在启动Web服务器和tomcat时遇到了一些问题。 据我了解,我应该使用ENTRYPOINT运行我想要的命令。 问题是,是否可以使用ENTRYPOINT运行多个命令? 还是应该创建一个小的bash脚本来全部启动? 基本上我想做的是: 但是我不知道这是否是一个好习惯,或者是否可行。 问题答案: 如果要在入口点运行许多命令,最

    • 问题内容: 键入命令时出现以下错误: 无法将“ mvn”识别为内部或外部命令,可操作程序或批处理文件。 我也遵循了这个步骤,但是仍然无法完成工作。 当我键入此命令时,我得到的路径打印为 当我键入“ echo%M2%”时,我的路径打印为 环境 : 问题答案: 确保在路径中设置了maven bin目录,并设置了JAVA_HOME属性

    • 我遵循了所有的教程,并尝试使用Maven。 我运行Win7,并下载了maven 3.5.4。 > 我将zip文件放在C:\Maven下,并将其解压缩到该位置。 我错过了什么?