在run -it / bin / bash之外的docker容器中发出运行python脚本的问题

时间:2016-03-17 00:35:44

标签: python docker xvfb

所以我有一个奇怪的问题,我试图运行的python脚本...这有效:

docker run -it <my image> /bin/bash

<inside container> xvfb-run python myscript.py <arg>

一切都开始了,firefox以无头模式启动,这一切都很好。

这不起作用:

docker run -d <my image> /bin/bash -c "xvfb-run python myscript.py <arg>"

docker top显示cmd正在运行,但没有其他任何事情发生。

为什么行为会与我第二种方式运行时有所不同?

1 个答案:

答案 0 :(得分:0)

所以对于遇到这个问题的其他人来说,这就是我最终解决问题的方法:

不要使用xvfb-run。我不确定为什么但是码头工得非常不开心。你需要让Xvfb在后台运行。但你必须以某种方式做到这一点!

我无法在RUN命令中让Docker使用Xvfb,但是很快就用完了脚本。创建一个名为start_headless_display.sh的脚本,看起来像这样:

Xvfb :1 -screen 0 1600x1200x16 &
python /myscript.py <args>

在Dockerfile中,确保脚本成为图片的一部分并添加以下说明:

ENV DISPLAY :1.0

RUN chmod a+x /start_headless_display.sh

CMD /start_headless_display.sh

现在运行

docker run -d <your image>

一切都应该有效 - docker top会显示你的脚本和Firefox快乐地离开。