Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker为jenkins同时执行Jar和Gradle死刑_Jenkins_Docker - Fatal编程技术网

Docker为jenkins同时执行Jar和Gradle死刑

Docker为jenkins同时执行Jar和Gradle死刑,jenkins,docker,Jenkins,Docker,我目前有以下docker文件 FROM openjdk:8 EXPOSE 8080 WORKDIR /usr/bin/app ENTRYPOINT ["java", "-jar"] 我在本地构建并作为 docker run -d -P -v $(pwd):/usr/bin/app/ jachno/jarrunner /usr/bin/app/build/libs/com.onboarding-service-0.0.1.jar 因此,docker容器基本上映射了本地卷和我想要运行的JAR的名

我目前有以下docker文件

FROM openjdk:8
EXPOSE 8080
WORKDIR /usr/bin/app
ENTRYPOINT ["java", "-jar"]
我在本地构建并作为

docker run -d -P -v $(pwd):/usr/bin/app/ jachno/jarrunner /usr/bin/app/build/libs/com.onboarding-service-0.0.1.jar
因此,docker容器基本上映射了本地卷和我想要运行的JAR的名称

这是为了让我可以测试我的录取测试vi jenkins。我真正想要的是一个容器为我同时做这两件事

因此,我基本上希望将jar的名称传递给容器。让它运行jar文件

然后运行单个gradle命令,在本例中为gradle AcceptanceTest

我知道如何将gradle安装到容器中并使其独立运行,但在启动时将jar的名称传递给它之后,我看不到如何运行gradle命令


一个容器是否有两个入口点?

我不确定是否正确理解了您的要求,但希望我能提供一些帮助

对于docker映像,您不能有两个入口点,但对于如何在映像上运行两个命令,您仍然至少有两个选择

1为jarrunner映像创建启动脚本,并将其用作入口点。脚本应该首先运行作为命令行参数或环境变量给出的jar文件名,然后运行test命令


2像现在一样使用jarrunner图像。当容器运行时,使用docker exec gradle AcceptanceTest在同一容器上运行另一个命令。

您可以像这样运行groovy映像并传递gradle命令

比如说,

docker run-rm-v$pwd:/usr/bin/app:rw niaquinto/gradle clean war

“清洁战争”等同于“格雷德尔清洁战争”

Docker商店链接-

既然你也提到了Jenkins,那么如果你能使用Jenkins提供的gradle插件,效率会更高。您可以从该插件调用任何本地gradle安装


下面是另一个可能有用的讨论

我选择了选项一,效果非常好,谢谢