2017-05-09 12 views
3

私はちょうどドッカーを使い始めましたが、まだそれは少し苦労しています。私はいくつかの簡単なグラフを生成するMatplotlibを使用してPythonの単純なPythonアプリケーションを持っています。私は現在、次のDockerfileています単純なドッキングされたPythonアプリケーションで出力を表示する方法は?

FROM python:2 

COPY requirements.txt/ 
RUN pip install --requirement requirements.txt 
COPY my_code.py/

CMD [ "python", "./my_code.py" ] 

しかし、これは次のエラーを生成します。

Traceback (most recent call last): 
    File "./fraud_detection_sample_code.py", line 161, in <module> 
    plt.figure(1) 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 535, in figure 
    **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager 
    return new_figure_manager_given_figure(num, figure) 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure 
    window = Tk.Tk() 
    File "/usr/local/lib/python2.7/lib-tk/Tkinter.py", line 1820, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: no display name and no $DISPLAY environment variable 

この問題を解決するための最良の方法だろうか?私のアプローチでも可能ですか?

+0

Dockerはそのような使用例を意味するものではありません。 – Smit

+0

どうすれば、このようなアプリケーションをドッキングできますか?それとも簡単にできないのですか? – hY8vVpf3tyR57Xib

+0

問題は、ドッカーが、ユーザーベースが拡大したときに、複数のVMにまたがってアプリケーションを展開したりスケーリングしたりすることです。コマンドラインで出力を表示するだけでは意味がありません。 – Smit

答えて

0

これをテストできますか?

docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix your_image_name 

それは私のために同様のプロジェクトで働いていました。 Idea from here

関連する問題