2016-12-08 5 views
2

VIRTUALENV Pythonでコマンドを実行ドッキングウィンドウの画像を作成します。この 仮想環境で対話型シェルを起動するは、私はPythonの仮想環境が作成されたドッキングウィンドウの画像を作成したい...</p> <p>を私は次のような問題を持っている

  • 実行docker run -it <image>:それから私は、次の2つのことを行うことができるようにしたいです。
  • がで実行されるファイル名を指定して実行docker run <image> <command>(なのpython --versionなど)は、仮想環境が

言った私は多くのことをしようとしたが、私がどこにも得ることはありませんようです。私はENTRYPOINTとCMDをいじり試みたが、私はどこにも得ることはありません

FROM ubuntu:16.04 
RUN apt-get -y update && apt-get install -y python3 python-pip 
RUN pip install virtualenv 
RUN virtualenv -p python3.5 /venvs/myenv3.5 
RUN . /venvs/myenv3.5/bin/activate && pip install numpy 

:私のDockerfileは、このように現在に見えます。 CMD . /venvs/myenv3.5/bin/activate; /bin/bash;私は環境内でインタラクティブなbashを起動できましたが、dockerを実行してpython --versionを実行すると、そのようなコマンドはその環境では実行されません。

これを行う方法はありますか?

+0

がhttps://www.theodo.fr/blog/2015/04/docker-and-virtualenv-a-clean-way-to-locally-を見てinstall-python-dependencies-with-pip-in-docker/ – user2915097

+0

これは私が今やった方法です(残念なことにあまりエレガントでないxD): 'ENV PATH :$ PATH' 誰かがより清潔な解決策は、私に教えてください。 – buugy

答えて

0

メインpythonの代わりに/venvs/myenv3.5/bin/python実行可能ファイルを使用することができます。これにより、その仮想環境内でpythonが実行されます。あなたはコメントで述べたようにENV PATH /venvs/myenv3.5/bin:$PATHを行うことによって、またはDockerfileにエントリ・ポイントを使用してこれを行うことができます。

ENTRYPOINT /venvs/myenv3.5/bin/python 

を今、あなたはあなたのイメージを実行すると、あなたのvirtualenvのpythonはデフォルトで実行されます。

$ docker run -it <image> --version 
Python 3.5.2 
あなたはこの画像上のシェルを取得する必要がある場合は、あなたがentrypontを上書きすることができ

$ docker run -it --entrypoint /bin/bash <image> 
/# 

あなたはまた、を使用することができますvirtualenvのに何かをインストールする:

RUN /venvs/myenv3.5/bin/pip install numpy 
関連する問題