Docker为jenkins同时执行Jar和Gradle死刑
我目前有以下docker文件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的名
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安装
下面是另一个可能有用的讨论 我选择了选项一,效果非常好,谢谢