使 Docker 容器使用安装的 Python 的最新版本
Make Docker container use newest version of Python installed
我在 Docker 容器中使用了几个 Python 模块,它们需要更高版本的 Python 。我安装 Python 并使用以下方式安装模块:
RUN apt-get update || : && apt-get install python3 -y
RUN apt-get install -y python3-pip
COPY requirements.txt /project
RUN pip3 install -r requirements.txt
预计我会在我的 Docker 容器中使用最新版本的 Python 但是当我进入它时 shell 和 运行 python3 --version
是作为 3.4.2
出现,这对我的程序来说太旧了。如何使默认 Python 成为我在上面安装的最新版本,而不会弄乱系统级 python?
我用于 Docker 容器的图像 运行time 是:node:9-slim
我认为您无法在 debian 8 发行版上找到预构建的 python3.9 软件包,因为您的环境已经很旧了。
唯一的解决方案是在基础容器中从 source code 构建 python3.9。接下来是一个完整的可用 Dockerfile:
FROM node:9-slim
RUN apt update; \
apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev; \
wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz; \
tar -zxvf Python-3.9.7.tgz; \
cd Python-3.9.7; \
./configure --prefix=/usr/local/python3; \
make && make install; \
ln -sf /usr/local/python3/bin/python3.9 /usr/bin/python3; \
ln -sf /usr/local/python3/bin/pip3.9 /usr/bin/pip3
验证一下:
$ docker build -t myimage:1 .
$ docker run --rm -it myimage:1 python3 --version
Python 3.9.7
$ docker run --rm -it myimage:1 pip3 --version
pip 21.2.3 from /usr/local/python3/lib/python3.9/site-packages/pip (python 3.9)
我在 Docker 容器中使用了几个 Python 模块,它们需要更高版本的 Python 。我安装 Python 并使用以下方式安装模块:
RUN apt-get update || : && apt-get install python3 -y
RUN apt-get install -y python3-pip
COPY requirements.txt /project
RUN pip3 install -r requirements.txt
预计我会在我的 Docker 容器中使用最新版本的 Python 但是当我进入它时 shell 和 运行 python3 --version
是作为 3.4.2
出现,这对我的程序来说太旧了。如何使默认 Python 成为我在上面安装的最新版本,而不会弄乱系统级 python?
我用于 Docker 容器的图像 运行time 是:node:9-slim
我认为您无法在 debian 8 发行版上找到预构建的 python3.9 软件包,因为您的环境已经很旧了。
唯一的解决方案是在基础容器中从 source code 构建 python3.9。接下来是一个完整的可用 Dockerfile:
FROM node:9-slim
RUN apt update; \
apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev; \
wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz; \
tar -zxvf Python-3.9.7.tgz; \
cd Python-3.9.7; \
./configure --prefix=/usr/local/python3; \
make && make install; \
ln -sf /usr/local/python3/bin/python3.9 /usr/bin/python3; \
ln -sf /usr/local/python3/bin/pip3.9 /usr/bin/pip3
验证一下:
$ docker build -t myimage:1 .
$ docker run --rm -it myimage:1 python3 --version
Python 3.9.7
$ docker run --rm -it myimage:1 pip3 --version
pip 21.2.3 from /usr/local/python3/lib/python3.9/site-packages/pip (python 3.9)