0

我正在尝试 dockerise 一个小型 python 应用程序。python 代码使用 PyQt4 库。该应用程序有一些我在构建图像时运行的测试单元。类似于以下内容:

RUN [ "/bin/bash", "-c", "source activate conda_environment && python -m unittest tests/tests_html_consistency.py" ]

python 代码中的 PyQt4 库需要一台 X 服务器来完成它的工作,但 docker 没有,因此,不幸的是,当我构建映像时,我收到以下错误:

python -m unittest: cannot connect to X server 

在其他类似的堆栈问题上,我发现一个可能的解决方案是简单地将 X 服务器的套接字挂载为 Docker 卷,并告诉 Docker 使用它。

docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY TheImage

但是如何在图像构建时做到这一点?上述命令仅在映像已经构建时才有效,在 'docker run' 时。此外,如果主机是 aws 实例(因此没有 x 服务器),那会起作用吗?我不这么认为...

4

1 回答 1

0

尝试使用以下--build-arg命令:

docker build -t yourContainer --build-arg DISPLAY=$DISPLAY .

于 2017-09-27T15:54:39.637 回答