编辑:解决-错字

我有一个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。 :叹:

09-04 20:08