作者:张富春(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"]
感觉挺蠢的,但毕竟还是解决了。期待网友给出更好的解决办法,谢谢!