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 .

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