无法升级Docker内部版本中的pip

pb3skfrl  于 2022-11-03  发布在  Docker
关注(0)|答案(4)|浏览(381)

在运行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.
gblwokeq

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可以缩减为:

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

最后一件事,尝试使用基于alpine的图像,它们要小得多(对于python,它比基于ubuntu的图像小得多)。

nxagd54h

nxagd54h2#

原来我运行的主机没有外部(互联网)接入。所以升级失败了。我们通过向DTR添加另一个包来解决这个问题,这个包里有必要的版本。

v9tzhpje

v9tzhpje3#

请使用/usr/bin/来执行pip。范例:

/usr/bin/pip install --upgrade pip
9jyewag0

9jyewag04#

运行这个命令为我解决了同样的问题(python 3.9):

RUN /usr/local/bin/python -m pip install --upgrade pip

相关问题