Docker:"未知指令:VIRTUALENV"

4

Dockerfile:

FROM ubuntu:14.04.2

RUN apt-get -y update && apt-get upgrade -y
RUN apt-get install python build-essential python-dev python-pip python-setuptools -y
RUN apt-get install libxml2-dev libxslt1-dev python-dev -y
RUN apt-get install libpq-dev postgresql-common postgresql-client -y
RUN apt-get install openssl openssl-blacklist openssl-blacklist-extra -y
RUN apt-get install nginx -y
RUN pip install virtualenv uwsgi

ADD canonicaliser_api ~
virtualenv ~/canonicaliser_api/venv
source ~/canonicaliser_api/venv/bin/activate
pip install -r ~/canonicaliser_api/requirements.txt

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80

CMD service nginx start

构建错误:

...
Successfully installed virtualenv uwsgi
Cleaning up...
 ---> 0c141e23f725
Removing intermediate container d9fd3c20365d
Step 8 : ADD canonicaliser_api ~
 ---> 89b4fb40dba5
Removing intermediate container b0c1ad946fc4
Step 9 : VIRTUALENV 
Unknown instruction: VIRTUALENV

它是否应该删除那些容器? 为什么它没有看到 virtualenv

1个回答

3

它应该移除那些容器吗?

是的。如果您想出于某种原因保留它们,请在docker build命令中传递--rm=false参数。

为什么它没有找到virtualenv

它找到了,但因为它位于一行的开始处,所以它将其视为Dockerfile指令,但没有"VIRTUALENV"指令。可能,您想在ADD之后的每一行前加上RUN

ADD canonicaliser_api ~
RUN virtualenv ~/canonicaliser_api/venv

# This one needs to be a single RUN so the "source" will affect pip.
RUN source ~/canonicaliser_api/venv/bin/activate && \
        pip install -r ~/canonicaliser_api/requirements.txt

谢谢你的提示。最后一行给了我一个奇怪的错误:无法打开要求文件:[Errno 2]没有这样的文件或目录:'/root/canonicaliser_api/requirements.txt'但它就在那里... - Houman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接