在 运行 之外的 docker 容器中发布 运行ning python 脚本 -it /bin/bash

Issue running python scripts in docker container outside of run -it /bin/bash

所以我在尝试 运行 的 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是运行ning,但没有其他任何反应。

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

对于 运行 遇到此问题的任何其他人,以下是我最终解决该问题的方法:

不要使用 xvfb-运行。我不确定为什么 docker 真的很不开心。您需要在后台安装 Xvfb 运行ning。但你必须以某种方式去做!

我无法在 运行 命令中 Docker 使用 Xvfb,但它很高兴 运行 从脚本中退出。创建一个名为 start_headless_display.sh 的脚本,并使其看起来像这样:

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

在您的 Docker 文件中,确保脚本将成为图像的一部分并添加以下说明:

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 正在愉快地运行。