[users at bb.net] Daemonized buildbot start

Pierre Tardy tardyp at gmail.com
Sun Dec 25 21:27:39 UTC 2016

Hi thomas,

Buildbot bootstrap is based on Twisted's ".tac" files, which are expected
to be started  using twistd -y buildbot.tac.
The "buildbot start" script is actually just a convenience wrapper around
twistd. It actually just run twistd, and then watches for the logs to
confirm buildbot successfully started. There is no value added beyond this
log watching, so it is not strictly mandatory to start buildbot with
buildbot start.
You can just start it with twistd -y buildbot.tac.

As you pointed up the official docker image is starting buildbot with
twistd -ny buildbot.tac
If you look at the help of twistd, -y means the Twisted daemon will run a
.tac file, and the -n means it wont daemonize.
This is because docker is doing process watching by itself, and do not want
its entrypoint to daemonize.

The buildbot start command also has a --no-daemon option, which really only
is 'exec'ing to twistd -ny.
So for your dockerfile, you can as well us twistd -ny or buildbot start
--no-daemon, this will work the same.

Another Docker specific is that the buildbot.tac is different. It
configured the twistd logs to output to stdout instead of outputing to
This is because docker design expects logs to be in stdout so that you can
configure any fancy cloud log forwarder independently from the
application's tech.


Le dim. 25 déc. 2016 à 14:32, Tomasz Urbański <utom.pl at gmail.com> a écrit :

> Hi,
> I'm trying to compose the simplest possible docker master image that runs
> buildbot start in ENTRYPOINT/CMD.
> I've tried to use a lot of combinations of 'dumb-init', 'gosu' and 'exec',
> but with no success.
> The situation is as follows:
> 1) When I try to run deamonized buildroot with the command 'docker run -d
> -v $local/vol/bldbot/master:/var/lib/buildbot buildbot-master-test ', the
> container starts successfully, but is is terminated abruptly. The log looks
> as follows:
> [timestamp] [-] Log opened.
> [timestamp] [-] twistd 16.0.0 (/usr/bin/python 2.7.12) starting up.
> [timestamp] [-] reactor class: twisted.internet.epollreactor.EPollReactor.
> [timestamp] [-] Starting BuildMaster -- buildbot.version: 0.9.2
> [timestamp] [-] Loading configuration from '/var/lib/buildbot/master.cfg'
> [timestamp] [-] Setting up database with URL 'sqlite:/state.sqlite'
> [timestamp] [-] setting database journal mode to 'wal'
> [timestamp] [-] doing housekeeping for master 1
> c8aa8b0d5ca3:/var/lib/buildbot
> [timestamp] [-] adding 1 new changesources, removing 0
> [timestamp] [-] adding 1 new builders, removing 0
> [timestamp] [-] adding 2 new schedulers, removing 0
> [timestamp] [-] No web server configured on this master
> [timestamp] [-] adding 1 new workers, removing 0
> [timestamp] [-] PBServerFactory starting on 9989
> [timestamp] [-] Starting factory <twisted.spread.pb.PBServerFactory
> instance at 0x7f2cca079b00>
> [timestamp] [-] BuildMaster is running
> 2) When I run the container in the interactive mode with the command
> 'docker run --rm -it -v $local/vol/bldbot/master:/var/lib/buildbot
> buildbot-master-test  /bin/sh' and next I run the command 'buildbot start'
> all works like charm.
> I've already studied the content of official buildbot master docker image,
> tj.  'buildbot/buildbot-master'. I see that authors decided to use the
> command 'exec twistd -ny $B/buildbot.tac' in start_buildbot.sh.
> So the question is, how to compose the ENTRYPOINT/CMD instructions in the
> Dockerfile that runs simply buildbot start.
> See also discussion and further details on Stack Overflow
> <http://stackoverflow.com/questions/41299608/daemonized-buildbot-start>
> _______________________________________________
> users mailing list
> users at buildbot.net
> https://lists.buildbot.net/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20161225/caf44baf/attachment.html>

More information about the users mailing list