Docker与Jar和Gradle在jenkins中执行

我目前有以下的docker文件

FROM openjdk:8 EXPOSE 8080 WORKDIR /usr/bin/app ENTRYPOINT ["java", "-jar"] 

我在本地构build并运行

 docker run -d -P -v $(pwd):/usr/bin/app/ jachno/jarrunner /usr/bin/app/build/libs/com.onboarding-service-0.0.1.jar 

所以基本上泊坞窗容器有本地卷映射到它和我想要运行的JAR的名称。

这是我可以testing我的验收testingvi jenkins。 我真正喜欢的是一个容器,为我做的两个。

所以我基本上想把jar子的名字传给容器。 让它运行jar文件

然后运行一个单一的gradle命令,在这种情况下,gradle AcceptanceTest

我知道如何将Gradle安装到容器中并让它独立运行,但是在启动时我已经将jar的名字传递给了它,我看不到如何运行gradle命令。

有一个容器有2个入口点吗?

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

Docker镜像不能有两个入口点,但对于如何在图像上运行两个命令,您至less还有两个select。

1)为您的jarrunner映像创build一个启动脚本,并将其用作入口点。 脚本应该首先运行jar文件(名字作为命令行参数或环境variables),然后运行testing命令。

2)像现在这样使用jarrunner图像。 当容器运行时,使用docker exec <container id/name> gradle AcceptanceTest在同一个容器上运行另一个命令。

你可以运行一个像https://github.com/niaquinto/docker-gradle这样的常规图像,并传递gradle命令&#x3002;

例如,

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

那里的“清洁战争”就相当于“干净的战争”

docker商店链接 – https://store.docker.com/community/images/niaquinto/gradle

既然你也提到了Jenkins,如果你可以使用Jenkins提供的gradle插件( https://wiki.jenkins-ci.org/display/JENKINS/Gradle+Plugin ),效率会更高。 你可以从这个插件调用任何本地gradle安装。

这是另一个可能有用的讨论。 Jenkins Gradle集成:调用Gradle与使用Gradle Wrapper选项