2017-10-10 37 views
1

編輯:Solved-錯字成功創建了一個virtualenv中(使用「mkproject」)在Dockerfile,但不能運行「workon」正確

我有一個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」,而不是問題。但是,當我試着和最後一行構建,它提供了workon錯誤:

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

workon被調用,但由於某種原因不能找到mapproxy的virtualenv。

WORKON_HOME & PROJECT_HOME都存在(在父映像中定義)並指向正確的位置(並且已經被「mkproject mapproxy」成功使用)。

那麼,爲什麼workon在存在缺陷virtualenv時返回一個錯誤?當我將最後一行隔離到第二個第三個Dockerfile時,會發生同樣的錯誤。

+1

爲了避免虛擬環境和非交互式shell的任何問題,我們只需在環境中顯式調用可執行文件:'$ WORKON_HOME/mapproxy/bin/pip'。也許這有助於... – jdno

回答

0

解決:這是一個簡單的錯字。 mkproject maproxy而不是mapproxy。 :嘆氣:

相關問題