2017-02-23 67 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