我创建了一个dockerfile,用于在 python3 上运行的 flask 应用安装 virtualenv 和 virtualenvwrapper 。< / p>
FROM ubuntu:14.04
RUN apt-get update \
&& apt-get install -y python3 python3-pip python3-dev \
&& pip3 install --upgrade pip && apt-get install unzip
# virtualenv stuff
RUN mkdir -p /opt/virtualenvs
ENV WORKON_HOME /opt/virtualenvs
ENV VIRTUALENVWRAPPER_PYTHON /usr/bin/python3
# install pip stuff
RUN pip3 install virtualenv virtualenvwrapper
RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh \
&& mkvirtualenv -p /usr/bin/python3 foobar \
&& workon foobar \
&& add2virtualenv /apps/foobar \
&& echo "source /usr/local/bin/virtualenvwrapper.sh" >> /etc/bash.bashrc \
&& pip3 install -r foobar/requirements.txt"
然后在我的bash脚本中我这样做:
echo Starting Gunicorn
source /usr/local/bin/virtualenvwrapper.sh
workon foobar
envdir /apps/foobar/.envdir gunicorn -w 2 -b 127.0.0.1:5000 dispatch:app --reload
但我得到的回应是找不到“envdir” - 这意味着没有安装。我不知道怎么可能,因为它应该通过requirements.txt安装?
所以必定有一些我做错了,但我不知道是什么:)
TNX, 汤姆
更新:
问题似乎是当我访问正在运行的容器并激活foobar的虚拟环境时,来自requirements.txt的东西没有安装?但它应该在docker RUN命令中运行。