无花果船坞监控破碎的容器

时间:2014-07-11 16:05:32

标签: docker supervisord

我有一个用于启动 N 泊坞广告容器(app,redis,mongo,postgre等等)的无花果配置

当我运行fig up时一切正常。

      Name      Command               State            Ports           
--------------------------------------------------------------------------
my_mongodb_1   /usr/local/bin/run       Up      28017/tcp, 27017/tcp     
my_redis_1     /usr/local/bin/run       Up      6379/tcp                 
my_pg_1        /usr/local/bin/run       Up      5432/tcp                 
my_app_1       ...                      Up      443->443/tcp, 80->80/tcp 

但是由于一个不重要的原因,可以关闭其中一个容器。

      Name      Command               State            Ports           
--------------------------------------------------------------------------
my_mongodb_1   /usr/local/bin/run       Up      28017/tcp, 27017/tcp     
my_redis_1     /usr/local/bin/run       Exit    6379/tcp                 
my_pg_1        /usr/local/bin/run       Up      5432/tcp                 
my_app_1       ...                      Up      443->443/tcp, 80->80/tcp 

可以配置 supervisord 来监控所有容器并启动已关闭的容器

2 个答案:

答案 0 :(得分:6)

您必须将每个程序(容器)配置为不同的文件,并且它们必须位于/etc/supervisor/conf.d/文件夹中,主管应在该文件夹中查找程序。在你的情况下,我建议:

#It is the /redis.conf
[program:redis]
command= /bin/bash -c "fig up redis"
        "fig logs redis"
directory=/path/of/fig_file
autostart=true
autorestart=true
stdout_logfile=/path/to/log/redis.log
redirect_stderr=true

对于pg:

#It is the /pg.conf
[program:pg]
command= /bin/bash -c "fig up pg"
        "fig logs pg"
directory=/path/of/fig_file
autostart=true
autorestart=true
stdout_logfile=/path/to/log/pg.log
redirect_stderr=true

其他程序(mongo和app)的配置(mongo.conf和app.conf)相同。

启动计算机或重新启动计算机时,每个程序必须启动。

上面的示例运行容器,您可以保留它,因为您可以使用它的日志。

您可以使用以下方法检查每个程序的状态:

sudo supervisorctl 

见:

app                          RUNNING    pid 17036, uptime 0:22:28
mongodb                      RUNNING    pid 17018, uptime 0:22:29
pg                           RUNNING    pid 17030, uptime 0:22:28
redis                        RUNNING    pid 17019, uptime 0:22:29
祝你好运!!

答案 1 :(得分:0)

我会使用Upstart,我有很好的经验。当流程没有进行守护时,Supervisord是最好的。