首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Heroku容器注册表上使用Jenkins部署Docker映像

在Heroku容器注册表上使用Jenkins部署Docker映像
EN

Stack Overflow用户
提问于 2017-10-27 11:44:47
回答 2查看 2.2K关注 0票数 6

我试图在Heroku上部署詹金斯基/码头,在编写Dockerfile时遇到了问题。

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

但是,要在Heroku的容器中运行Jenkins,我需要写什么命令呢?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-27 12:05:48

该错误指的是您的CMD中缺少的Dockerfile节。

但是,如果您不打算修改jenkins映像的上游版本(如您向Dockerfile提供的链接所反映的那样),则不需要创建自己的坞映像和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映像,例如安装额外的jenkins插件(就像OP需要的那样),那么您最终将创建自己的Dockerfile,您将不得不这样做:

代码语言:javascript
复制
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节,通过jenkins.sh ENTRYPOINT脚本检测到--debug=5并发送到jenkins.war程序,这反过来又将调试级别设置为5(如果没有指定,则为默认级别),这反过来不会对我们产生任何影响。

编辑2:

由于heroku不接受ENTRYPOINT的多条指令,因此必须进一步偏离正常的Dockerfile场景,取消ENTRYPOINT上游节,将其设置为[],因为它与heroku不兼容,然后将所有内容放在CMD节中:

代码语言:javascript
复制
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

由于jenkins和java是内存不足的应用程序,因此我添加了JAVA_OPTS,使其具有免费的层次dyno,并根据需要进行调整。

我将-s标志添加到tini中,因为它不再有PID 1,更详细地介绍了这里

我添加了发送给--httpPort=$PORTjenkins.war标志,这样heroku就可以为应用程序填充合适的$PORT

heroku文档的说明:

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

票数 4
EN

Stack Overflow用户

发布于 2017-10-27 15:57:18

现在,当我试图在Heroku上部署jenkinsci/docker时,我遇到了另一个问题:

2017年-10-27T15:53:37.569477+00: herokuweb.1:状态从崩溃变为启动 2017-10-27T15:53:35.856897+00:00 appapi: Deployed web (dce6a8335a9a)由用户roman.skaskevich@gmail.com 2017-10-27T15:53:35.856897+00:00 appapi: Releasev7由用户roman.skaskevich@gmail.com创建 2017-10-27T15:53:53.949433+00:00 herokuweb.1:用命令启动进程‘-调试\=5’ 2017-10-27T15:53:56.142034+00:00附录1:错误:没有这样的文件或目录 2017年-10-27T15:53:56.243216+00: herokuweb.1:状态从开始变为崩溃 2017-10-27T15:53:56.228817+00:00herokuweb.1:状态126退出的进程

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46974251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档