无法在docker build中升级pip

时间:2016-05-03 21:39:41

标签: docker pip

在运行Docker构建(使用Jenkins CI)时,它在升级pip(docker文件的最后一行)时失败。我需要它来升级版本8.1.1,因为它在日志中建议,因为我的部署在PIP版本不匹配时失败。

Dockerfile

FROM ubuntu:14.04
FROM python:3.4   

# Expose a port for gunicorn to listen on
EXPOSE 8002

# Make a workdir and virtualenv
WORKDIR /opt/documents_api

# Install everything else
ADD . /opt/documents_api

# Set some environment varialbes for PIP installation and db management
ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT="True"

RUN apt-get update
RUN apt-get install -y python3-pip

RUN pip3 install --upgrade pip

这是错误:

Step 15 : RUN pip3 install --upgrade pip
19:46:00  ---> Running in 84e2bcc850c0
19:46:04 Collecting pip
19:46:04   Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB)
19:46:04 Installing collected packages: pip
19:46:04   Found existing installation: pip 7.1.2
19:46:04     Uninstalling pip-7.1.2:
19:46:05       Successfully uninstalled pip-7.1.2
19:46:10 Exception:
19:46:10 Traceback (most recent call last):
19:46:10   File "/usr/local/lib/python3.4/shutil.py", line 424, in _rmtree_safe_fd
19:46:10     os.unlink(name, dir_fd=topfd)
19:46:10 FileNotFoundError: [Errno 2] No such file or directory: 'pip'
19:46:10 You are using pip version 7.1.2, however version 8.1.1 is available.

3 个答案:

答案 0 :(得分:3)

当你使用两个FROM指令时,docker会创建两个输出图像,这就是为什么它会搞乱。

首先,移除FROM ubuntu:14.04并删除Dockerfile中的apt-get update,这是一种不好的做法(每次构建时,您的图像都会有所不同,从而破坏了容器的整个目的/泊坞)。

其次,您可以查看官方python图片Dockerfile以了解安装了哪个版本的pip,例如includes the newline(它已经是v8.1.1)。

第三,您的案例(外部申请)有一个特殊形象:python:3.4。您的Dockerfile可以简化为:

FROM python:3.4-onbuild
ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT="True"
EXPOSE 8002
CMD python myapp.py

最后一点,尝试使用基于高山的图像,它们要小得多(对于python,它的python:3.4-onbuild比基于ubuntu的图像要小。)

答案 1 :(得分:1)

结果我运行的主机没有外部(互联网)访问权限。所以升级失败了。我们通过在DTR中添加另一个包中包含必要的版本来解决它。

答案 2 :(得分:1)

使用/ usr / bin /运行pip。示例:

/usr/bin/pip install --upgrade pip