docker supervisor中的Xvfb命令无法正常工作

时间:2016-02-07 15:44:51

标签: docker supervisor xvfb

我有一个基于Ubuntu的Docker镜像,它运行一个supervisor脚本作为Dockerfile末尾的CMD。这在启动时成功运行容器中的uwsgi和nginx。但是,supervisor-app.conf末尾附加的以下内容不起作用:

[program:Xvfb]
command=/usr/bin/Xvfb :1 -screen 0 1024x768x16 &> xvfb.log  &

当我在正在运行的docker实例中打开shell时,没有运行X实例:

root@9221694363ea:/# ps aux | grep X
root        39  0.0  0.0   8868   784 ?        S+   15:32   0:00 grep --color=auto X

但是,运行与supervisor-app.conf完全相同的命令

root@9221694363ea:/# /usr/bin/Xvfb :1 -screen 0 1024x768x16 &> xvfb.log  &
 [1] 40
 root@9221694363ea:/# ps aux | grep X                                      
 root        40  1.2  0.1 170128 21604 ?        Sl   15:33   0:00 /usr/bin/Xvfb :1 -screen 0 1024x768x16
 root        48  0.0  0.0   8868   792 ?        S+   15:33   0:00 grep --color=auto X

那么supervisor-app.conf中的行有什么问题?

1 个答案:

答案 0 :(得分:0)

Supervisor不处理特定于bash的运算符,例如-r-run-in-the-background'&'或者像'>'这样的重定向根据我原来的失败配置行。 我通过使用bash -c来解决它:

    [program:Xvfb]
    command=bash -c "/usr/bin/Xvfb :1 -screen 0 1024x768x16 &> xvfb.log"

现在当我进入docker bash shell时,会创建Xvfb窗口,等待我在代码中的其他地方使用它。