编辑:解决-错字
我有一个Dockerfile,可以使用virtualenvwrapper成功地创建了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”工作正常。如果我注释掉最后一行,则它可以成功构建,并且可以旋转容器并手动运行“workon mapproxy”,这不是问题。但是,当我尝试使用最后一行进行构建时,出现了工作错误:
ERROR: Environment 'mapproxy' does not exist. Create it with 'mkvirtualenv mapproxy'.
正在调用workon,但由于某种原因,它找不到mapproxy virtualenv。
WORKON_HOME和PROJECT_HOME都存在(在父镜像中定义),并且指向正确的位置(并由“mkproject mapproxy”成功使用)。
那么,当mapproxy virtualenv存在时,为什么workon返回错误?当我将最后一行隔离到第二个构建的第三个Dockerfile时,会发生相同的错误。
最佳答案
解决:这是一个简单的错字。 mkproject maproxy而不是mapproxy。 :叹: