51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

docker python 基础镜像制作

docker build -f ./Dockerfile -t "centos7-py:v1" .

dokcer-python环境基础镜像制作 - tangshow - 博客园 (cnblogs.com)

定制CentOS系统Python基础镜像
下面给出一个实例:

开发环境:CentOS 7

Python版本:3.6

# 完整功能python3 imiyuer/python:3.6.4-centos
FROM centos:7.5.1804
MAINTAINER imiyuer <imiyuer@qq.com>

ENV PATH $PATH:/usr/local/python3/bin/ ENV PYTHONIOENCODING utf-8

RUN set -ex
# 替换yum源 && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \ && curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \ # 安装python依赖库 && yum makecache
&& yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget
&& yum clean all
&& rm -rf /var/cache/yum
# 下载安装python3 && wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
&& mkdir -p /usr/local/python3
&& tar -zxvf Python-3.6.4.tgz
&& cd Python-3.6.4
&& ./configure --prefix=/usr/local/python3
&& make && make install && make clean
# 修改pip默认镜像源 && mkdir -p ~/.pip
&& echo '[global]' > ~/.pip/pip.conf
&& echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf
&& echo 'trusted-host = pypi.tuna.tsinghua.edu.cn' >> ~/.pip/pip.conf
&& echo 'timeout = 120' >> ~/.pip/pip.conf
# 更新pip && pip3 install --upgrade pip
# 安装wheel && pip3 install wheel
# 删除安装包 && cd ..
&& rm -rf /Python*
&& find / -name "*.py[co]" -exec rm '{}' ';'
# 设置系统时区 && rm -rf /etc/localtime
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

执行需要16分钟左右, 因为 wget 下载 25M的pyhon 在国内很慢大概需要5分钟。 如果是用香港服务器,下载需要不到1分钟。

几点说明:

1、RUN中尽量使用 \ &&连接命令的方式,减少镜像层数,可以一定程度减少体积。

2、尽可能删除不需要的文件,也是为了减少镜像体积。

3、Python默认不安装wheel,但是第三方库常需要使用wheel安装,所以加上它。

4、docker运行时程序获取系统时间时,如打印日志等,获取的是docker镜像内文件系统的时区设置,默认是格林尼治标准时区,所以需要设置为所在的时区。

wheel是python新的发行标准,旨在替代传统的egg,pip >=1.4的版本均支持wheel, 使用wheel作为你python库的发行文件

Wheel是一种更高效的安装程序,可以帮助用户节省时间,提高性能,并且可以更轻松地安装Python包

Wheel文件以.whl为扩展名,它是一种二进制文件,可以安装任何Python模块。

更改: python3.11

FROM centos:7.5.1804
MAINTAINER imiyuer <imiyuer@qq.com>

ENV PATH $PATH:/usr/local/python3/bin/ ENV PYTHONIOENCODING utf-8

RUN set -ex
# 替换yum源 && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \ && curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \ # 安装python依赖库 && yum makecache
&& yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget
&& yum clean all
&& rm -rf /var/cache/yum
# 下载安装python3 && wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
&& mkdir -p /usr/local/python3
&& tar -zxvf Python-3.11.0.tgz
&& cd Python-3.11.0
&& ./configure --prefix=/usr/local/python3
&& make && make install && make clean
# 修改pip默认镜像源 && mkdir -p ~/.pip
&& echo '[global]' > ~/.pip/pip.conf
&& echo 'index-url = https://mirrors.aliyun.com/pypi/simple' >> ~/.pip/pip.conf
&& echo 'trusted-host = mirrors.aliyun.com' >> ~/.pip/pip.conf
&& echo 'timeout = 120' >> ~/.pip/pip.conf
# 更新pip && pip3 install --upgrade pip
# 安装wheel && pip3 install wheel
# 删除安装包 && cd ..
&& rm -rf /Python*
&& find / -name "*.py[co]" -exec rm '{}' ';'
# 设置系统时区 && rm -rf /etc/localtime
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

docker build -t registry.cn-beijing.aliyuncs.com/kattgatt-base/python311:v1

docker build -t registry.cn-hangzhou.aliyuncs.com/kattgatt-base/python-smart-home-plugins:v2 .

赞(8)
未经允许不得转载:工具盒子 » docker python 基础镜像制作