在 运行 之外的 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 正在愉快地运行。
所以我在尝试 运行 的 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 正在愉快地运行。