2017-02-23 63 views
0

目前,我有以下泊坞窗文件泊坞窗既罐和摇篮处决它詹金斯

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 

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

这是我可以测试我的验收测试vi jenkins。我真的很喜欢一个容器来为我做两件事。

所以我基本上我想通过罐子的名称到容器。有它运行的jar文件

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

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

是否有2个入口点的容器?

回答

1

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

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

1)为您的jarrunner图像创建一个启动脚本并将其用作入口点。脚本应该首先运行jar文件(名称作为命令行参数或环境变量),然后运行测试命令。

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

+0

我去了选项一,它工作得很好谢谢 – JaChNo

0

您可以运行像https://github.com/niaquinto/docker-gradle这样的常规图像,并传递gradle命令。

例如,

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

其中 '干净的战争' 将等同于 'gradle这个干净的战争'

泊坞窗Store链接 - 既然你也提到关于詹金斯https://store.docker.com/community/images/niaquinto/gradle

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

这是另一个可能有用的讨论。 Jenkins Gradle Integration: Invoke Gradle vs. Use Gradle Wrapper options