在Dockerfile中成功创build了virtualenv(使用“mkproject”),但无法正常运行“workon”

编辑:解决了错字

我有一个Dockerfile,使用virtualenvwrapper成功创build一个virtualenv(以及在正常环境中设置一堆“标准”设置/软件包)。 我正在使用生成的图像作为进一步使用的“基础图像”。 迄今为止都很好。 但是,以下Dockerfile(基于第一个图像“base_image_14.04”)落在最后一行:

FROM base_image_14.04 USER root RUN DEBIAN_FRONTEND=noninteractive \ apt-get update && apt-get install -y \ libproj0 libproj-dev \ libgeos-c1v5 libgeos-dev \ libjpeg62 libjpeg-dev \ zlib1g zlib1g-dev \ libfreetype6 libfreetype6-dev \ libgdal20 libgdal-dev \ && rm -rf /var/lib/apt/lists USER webdev RUN ["/bin/bash", "-ic", "mkproject maproxy"] EXPOSE 80 WORKDIR $PROJECT_HOME/mapproxy ADD ./requirements.txt . RUN ["/bin/bash", "-ic", "workon mapproxy && pip install -r requirements.txt"] 

“mkproject mapproxy”工作正常。 如果我注释掉最后一行,它会成功build立,我可以旋转容器并手动运行“workon mapproxy”,而不是一个问题。 但是当我尝试用最后一行来构build时,会产生一个工作错误:

 ERROR: Environment 'mapproxy' does not exist. Create it with 'mkvirtualenv mapproxy'. 

workon被称为,但由于某种原因,它不能findmapproxy virtualenv。

WORKON_HOME和PROJECT_HOME都存在(在父图像中定义),并指向正确的位置(并通过“mkproject mapproxy”成功使用)。

那么为什么workon在存在mapproxy virtualenv时返回一个错误呢? 当我把最后一行隔离到第二个第三个Dockerfile时,会发生同样的错误。

解决:这是一个简单的错字。 mkproject maproxy而不是mapproxy。 :叹: