在bash脚本中激活virtualenv和envdir

时间:2017-10-17 06:50:59

标签: python bash docker virtualenv

我创建了一个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命令中运行。

0 个答案:

没有答案