在Heroku Container Registry上部署Jenkins的Docker镜像



我正试图在Heroku上部署jenkinsi/docker,但在编写Dockerfile时遇到了问题。

当我通过heroku container:push web在Heroku Container Registry上推送Docker映像时,我得到了一个错误Your Docker image must specify a 'CMD' instruction

但是我必须写什么命令才能在Heroku上的容器中运行Jenkins?

提前感谢!

错误是指Dockerfile中缺少CMD节。

但是,如果您不打算修改jenkins图像上游版本中的任何内容(如您提供给Dockerfile的链接所示),则不需要创建自己的docker图像和Dockerfile

您可以只在本地使用docker pull jenkins/jenkins:lts,然后使用docker tag jenkins/jenkins:lts registry.heroku.com/<app>/<process-type>对其进行标记,然后使用新标记docker push registry.heroku.com/<app>/<process-type>将其推送到Heroku

您可以在Heroku的官方文档中阅读更多关于此主题的内容。

编辑:

例如,如果你确实需要一个自定义的jenkins docker镜像来安装额外的jenkins插件(就像OP需要的那样),你最终会创建自己的Dockerfile,你必须这样做:

FROM jenkins/jenkins:lts
RUN /usr/local/bin/install-plugins.sh gitlab-plugin publish-over-dropbox
CMD ["--debug=5"]

虽然我们在正常环境中不需要它,但我们添加了一个CMD节,只是为了通过heroku container:push检查,该检查需要Dockerfile中的CMD节,--debug=5jenkins.shENTRYPOINT脚本检测并发送到jenkins.war程序,从而将调试级别设置为5(如果未指定,则为默认级别),这反过来对我们没有任何影响。

编辑#2:

因为heroku不接受ENTRYPOINT的多个指令,所以您必须进一步偏离正常的Dockerfile场景,并通过将ENTRYPOINT上游节设置为[]来取消它,因为它与heroku兼容,然后将所有内容都放在CMD节中:

FROM jenkins/jenkins:lts
RUN /usr/local/bin/install-plugins.sh gitlab-plugin publish-over-dropbox
ENV JAVA_OPTS -Xms256m -Xmx512m
ENTRYPOINT []
CMD /bin/tini -s -- /usr/local/bin/jenkins.sh --httpPort=$PORT

我在coupe中添加了JAVA_OPTS,并提供了一个免费的dyno层,因为jenkins和java都是需要内存的应用程序,可以根据需要进行调整。

我在tini中添加了-s标志,因为它不再有PID 1,这里有更多内容。

我添加了发送到jenkins.war--httpPort=$PORT标志,这样heroku就可以为应用程序填充正确的$PORT

heroku文档注释:

ENTRYPOINT是可选的。如果未设置,将使用/bin/sh-c

现在我在Heroku上部署jenkinsi/docker时遇到了另一个问题:

2017-10-27T15:53:37.569477+00:0 heroku[web.1]:状态从崩溃变为启动

2017-10-27T15:53:35.856897+00:0 app[api]:用户部署的web(dce6a8335a9a)roman.skaskevich@gmail.com

2017-10-27T15:53:35.856897+00:0 app[api]:用户创建的v7版本发布roman.skaskevich@gmail.com

2017-10-27T15:53:53.949433+00:0 heroku[web.1]:使用命令"--debug\=5"启动进程

2017-10-27T15:53:56.142034+00:0 app[web.1]:错误:没有这样的文件或目录

2017-10-27T15:53:56.243216+00:0 heroku[web.1]:状态从启动更改为崩溃

2017-10-27T15:53:56.228817+00:0 heroku[web.1]:进程退出,状态为126

最新更新