我有一个基于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中的行有什么问题?
答案 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窗口,等待我在代码中的其他地方使用它。