Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python virtualenv中创建执行命令的docker映像_Python_Ubuntu_Docker_Virtualenv - Fatal编程技术网

在python virtualenv中创建执行命令的docker映像

在python virtualenv中创建执行命令的docker映像,python,ubuntu,docker,virtualenv,Python,Ubuntu,Docker,Virtualenv,我有以下问题 我想创建一个docker映像,在该映像上创建python虚拟环境。然后我想做以下两件事: 运行docker Run-it,在这个窗口中启动一个交互式shell 虚拟环境 运行docker Run(例如python--version),即 在所述虚拟环境中执行 我尝试了很多东西,但似乎都一事无成。我的Dockerfile当前看起来如下所示: FROM ubuntu:16.04 RUN apt-get -y update && apt-get install -y

我有以下问题

我想创建一个docker映像,在该映像上创建python虚拟环境。然后我想做以下两件事:

  • 运行
    docker Run-it
    ,在这个窗口中启动一个交互式shell 虚拟环境
  • 运行
    docker Run
    (例如python--version),即 在所述虚拟环境中执行
我尝试了很多东西,但似乎都一事无成。我的Dockerfile当前看起来如下所示:

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
我试着在ENTRYPOINT和CMD上乱搞,但我什么也没做。通过添加以下行:
CMD/venvs/myenv3.5/bin/activate/bin/bash我能够在环境中启动一个交互式bash,但是运行docker run python——版本表明类似的命令不会在所述环境中执行


有办法做到这一点吗?

您可以使用
/venvs/myenv3.5/bin/python
可执行文件而不是主
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
看看我现在是怎么做的(不幸的是不是很优雅的xD):
ENV PATH:$PATH
如果有人有更干净的解决方案,请告诉我。
$ docker run -it --entrypoint /bin/bash <image>
/ #
RUN /venvs/myenv3.5/bin/pip install numpy