docker工人build立一个模板Dockerfile

我正在使用特拉维斯build立文物(jar子和拉链),并将它们存储在bintray。 我想build立docker的图像,安装这些文物,例如在0.1.0版本的“应用程序”artefact,哈希abc123:

FROM some-registry/oracle-jre7 RUN wget https://BINTRAY_USER:BINTRAY_API_KEY@dl.bintray.com/USER/REPO/app-0.1.0_abc123.jar -O /opt/app.jar EXPOSE 9000 CMD ["java", "-jar", "/opt/app.jar"] 

每次我想创build这个docker图像的哈希(也许版本)将是不同的,我不想使用“最新”。 我可以使用travis中的模板轻松生成Dockerfile,但是我不确定如何构buildDocker镜像。 看来我不能在travis和quay.io和docker集线器上build立它,我没有一个API可以发布Dockerfile或存档(虽然你可以通过在quay.io ui做到这一点)。

我不想让Travis将Dockerfile提交到次要的git仓库,因为如果它们有多个分支,那么同步两个仓库就变得非常复杂。 我也可以像这样提交一个Dockerfile到主仓库,然后触发quay.io或dockerhub在artefact创build后(如果他们可以以某种方式评估git hash):

 FROM some-registry/oracle-jre7 ENV APP_VERSION 0.1.0 ENV APP_GIT_HASH $(git rev-parse --short HEAD) # this definitely doesn't work RUN wget https://BINTRAY_USER:BINTRAY_API_KEY@dl.bintray.com/USER/REPO/app-${APP_VERSION}_${GIT_HASH}.jar -O /opt/app.jar EXPOSE 9000 CMD ["java", "-jar", "/opt/app.jar"] 

我目前正在尝试在ec2中放置docker主机,并让travisbuild立docker镜像并将其推送到bintary上的docker仓库,但我宁愿不必亲自pipe理主机。