在运行Docker构建(使用Jenkins CI)时,它在升级pip(Docker文件的最后一行)时失败。我需要它来升级版本8.1.1,正如日志中所建议的那样,因为我的部署在PIP版本不匹配时失败。
停靠文件
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.
4条答案
按热度按时间gblwokeq1#
当你使用两个
FROM
指令时,docker会创建两个输出图像,这就是为什么它会混乱的原因。首先,删除
FROM ubuntu:14.04
,不要在Docker文件中使用apt-get update
,这是一个糟糕的做法(每次构建时,您的映像都将不同,这与容器/Docker的整个目的背道而驰)。第二,你可以检查官方的
python
图像Dockerfile,以了解安装了哪个版本的pip,例如,python:3.4(它已经是v8.1.1)。第三,有一个专门为你准备的形象案例(外部应用):python:3.4-onbuild。您的Dockerfile可以缩减为:
最后一件事,尝试使用基于alpine的图像,它们要小得多(对于python,它比基于ubuntu的图像小得多)。
nxagd54h2#
原来我运行的主机没有外部(互联网)接入。所以升级失败了。我们通过向DTR添加另一个包来解决这个问题,这个包里有必要的版本。
v9tzhpje3#
请使用/usr/bin/来执行pip。范例:
9jyewag04#
运行这个命令为我解决了同样的问题(python 3.9):