【解决了一个小问题】在某个linux基础镜像中安装python特定的版本

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


在某个基础镜像中,安装了python3.6。但是一个测试需要python3.8的版本,于是通过dockerfile实现了更换新版本的镜像。
下面直接上Dockerfile的源码:

FROM centos_xxx:0.0.1   # 源自某个linux的基础镜像

#MAINTAINER 维护者信息
LABEL MAINTAINER="ahfuzhang"

#ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8

ENV TZ=Asia/Shanghai

# 为了编译python,这三个库必须要装
RUN   yum install -y zlib-devel
RUN   yum install -y libffi-devel
RUN   yum install -y openssl-devel

RUN wget 'https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz'  # 下载python源码
RUN   mkdir /usr/local/python3 && \
  tar -zxvf Python-3.8.13.tgz && \
  cd Python-3.8.13 && \
  ./configure --prefix=/usr/local/python3 && \
  make && \
  make install && \
  rm -f /usr/bin/python3 && \
  ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3 && \
  cd .. && \
  rm -fdr Python-3.8.13 Python-3.8.13.tgz
# 以上就是下载,解压,configure, 编译,安装,建立软链接

# 还需要安装pip
RUN wget 'https://files.pythonhosted.org/packages/4a/25/ec29a23ef38b9456f9965c57a9e1221e6c246d87abbf2a31158799bca201/setuptools-62.3.2.tar.gz'
RUN tar -zxvf setuptools-62.3.2.tar.gz && \
    cd setuptools-62.3.2 && \
    python3 setup.py install && \
    cd .. && \
    rm -fdr setuptools-62.3.2.tar.gz setuptools-62.3.2

RUN wget 'https://files.pythonhosted.org/packages/4b/b6/0fa7aa968a9fa4ef63a51b3ff0644e59f49dcd7235b3fd6cceb23f202e08/pip-22.1.2.tar.gz'
RUN tar -zxvf pip-22.1.2.tar.gz && \
    cd pip-22.1.2 && \
    python3 setup.py install && \
    cd .. && \
    rm -fdr pip-22.1.2.tar.gz pip-22.1.2

# 顺带把几个python需要的库也装了
RUN python3 -m pip install protobuf
RUN python3 -m pip install gevent
RUN python3 -m pip install requests
RUN python3 -m pip install python-snappy

RUN mkdir -p /data
ADD example/ /data/

WORKDIR /data/
#ENTRYPOINT ["python", "main.py"]

感觉挺蠢的,但毕竟还是解决了。期待网友给出更好的解决办法,谢谢!

posted on 2022-06-03 22:19  ahfuzhang  阅读(217)  评论(0)    收藏  举报