linux – Daemonized buildbot start

linux – Daemonized buildbot start,第1张

概述我正在尝试编写最简单的docker buildbot主映像,它在ENTRYPOINT / CMD Dockerfile指令中运行buildbot start. 我试过使用dumb-init,gosu和exec的很多组合,但没有成功. 情况如下: >当我尝试使用命令docker run -d -v $local / vol / bldbot / master:/ var / lib / buildb 我正在尝试编写最简单的docker buildbot主映像,它在ENTRYPOINT / CMD Dockerfile指令中运行buildbot start.
我试过使用dumb-init,gosu和exec的很多组合,但没有成功.
情况如下:

>当我尝试使用命令docker run -d -v $local / vol / bldbot / master:/ var / lib / buildbot buildbot-master-test运行deamonized buildroot时,容器成功启动,但它突然终止.日志如下所示:

[timestamp] [ – ]日志已打开.
[timestamp] [ – ] twistd 16.0.0(/usr/bin/python 2.7.12)启动.
[timestamp] [ – ] reactor类:twisted.internet.epollreactor.EPollReactor.
[timestamp] [ – ]启动BuildMaster – buildbot.version:0.9.2
[timestamp] [ – ]从’/var/lib/buildbot/master.cfg’加载配置
[timestamp] [ – ]使用URL“sqlite:/state.sqlite”设置数据库
[timestamp] [ – ]将数据库日志模式设置为’wal’
[时间戳] [ – ]为主人做家务1 c8aa8b0d5ca3:/ var / lib / buildbot
[timestamp] [ – ]添加1个新的更改源,删除0
[timestamp] [ – ]添加1个新构建器,删除0
[timestamp] [ – ]添加2个新调度程序,删除0
[timestamp] [ – ]此主服务器上未配置Web服务器
[timestamp] [ – ]添加1个新工人,删除0
[timestamp] [ – ] PBServerFactory从9989开始
[时间戳] [ – ]开始工厂
[timestamp] [ – ] BuildMaster正在运行
>当我使用命令docker以交互模式运行容器时运行–rm -it -v $local / vol / bldbot / master:/ var / lib / buildbot buildbot-master-test / bin / sh然后我运行命令buildbot start就像魅力一样.

我已经研究过官方buildbot主docker镜像的内容,即buildbot / buildbot-master.我看到作者决定在start_buildbot.sh中使用命令exec twistd -ny $B / buildbot.tac,而不是他们自己的buildbot启动.

所以问题是,如何在仅运行buildbot start的Dockerfile中编写ENTRYPOINT / CMD指令.

附录1

Dockerfile内容

FROM        alpine:3.4ENV BASE_DIR=/var/lib/buildbot SRC_DIR=/usr/src/buildbotcopY start $SRC_DIR/RUN \    echo @testing http://nl.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositorIEs && \    echo @community http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositorIEs && \    apk add --no-cache \        python \        py-pip \        py-twisted \        py-cffi \        py-cryptography@community \        py-service_IDentity@community \        py-sqlalchemy@community \        gosu@testing \        dumb-init@community \        py-jinja2 \        tar \        curl && \# install pip dependencIEs    pip install --upgrade pip setuptools && \    pip install "buildbot" && \    rm -r /root/.cacheworkdir $BASE_DIRRUN \    adduser -D -s /bin/sh bldbotmaster && \    chown bldbotmaster:bldbotmaster .VolUME $BASE_DIRCMD ["dumb-init","/usr/src/buildbot/start","buildbot","master"]

附录2

启动脚本内容

#!/bin/shset -eBASE_DIR=/var/lib/buildbotif [[ "" = 'buildbot' && "" = 'master' ]]; then    if [ -z "$(ls -A "$BASE_DIR/master.cfg" 2> /dev/null)" ]; then        gosu bldbotmaster buildbot create-master -r $BASE_DIR        gosu bldbotmaster cp $BASE_DIR/master.cfg.sample $BASE_DIR/master.cfg    fi    exec gosu bldbotmaster buildbot start $BASE_DIRfiexec "$@"
解决方法 Buildbot引导程序基于Twisted的“.tac”文件,预计将使用twistd -y buildbot.tac启动.
buildbot启动脚本实际上只是扭曲的一个方便包装器.它实际上只是运行twistd,然后监视日志以确认buildbot成功启动.在此日志监视之外没有任何增值,因此使用buildbot start启动buildbot并非严格要求.
你可以用twistd -y buildbot.tac来启动它.

当你指出官方docker镜像正在使用twistd -ny buildbot.tac启动buildbot
如果你看看twistd的帮助,-y意味着Twisted守护进程将运行.tac文件,-n表示它不会进行守护进程.
这是因为docker正在自己进行进程监视,并且不希望其入口点进行守护进程.

buildbot start命令也有一个–nodaemon选项,它实际上只是’exec’到twistd -ny.
所以对于你的dockerfile,你也可以使用twistd -ny或buildbot start –nodaemon,这将是相同的.

另一个Docker具体是buildbot.tac是不同的.它将twistd日志配置为输出到stdout而不是输出到twisted.log.这是因为docker设计期望日志在stdout中,因此您可以独立于应用程序的技术配置任何花哨的云日志转发器.

总结

以上是内存溢出为你收集整理的linux – Daemonized buildbot start全部内容,希望文章能够帮你解决linux – Daemonized buildbot start所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1029690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存