暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用 docker 构建 Python3 镜像

yangyidba 2022-05-05
3186

问题背景

假期处理某些技术的事情,花费2天,其中一半时间是处理 Python 安装环境的问题。

客户侧的机器上默认是 Python 2.7.5 ,没有标准的 Python3 环境,而且不能联网,也就不能方便的使用 yum 工具安装 Python3 和其他相关依赖的包 和相关模块。

解决

其实最开始是 惯性思维 逐步通过找包的方式 初始化 Python3 的环境,经过一番尝试,依赖太多解决 ,yum 源又不完整,故想到使用 docker打包 Python 项目成镜像文件的方式。其实有2种方式。

方法一   dockerfile

1 编写dockerfile

FROM python:3.6WORKDIR /appADD . .RUN pip  install -r requirements.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.comRUN yum install kde-l10n-Chinese -yRUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8CMD ["python""./src/test.py"]

2  生成Docker镜像 在dockerfile所在的目录下运行

docker build  -t my_python:3.6
.

3 启动容器

docker run -itd --name python_docker
 my_python:3.6
bash

检查容器里面的python 环境是否符合预期

4  导出镜像 上传到客户机器

docker save c58af804d4c5 > my_python_3.6.tar

docker import root/my_python_3.6.tar
 my_python_3.6

docker run -itd my_python_3.6
bash 该方法的缺点是 镜像文件比较大 接近1G

方法二  直接利用官方的  python 镜像

1  docker search python3.8 开源找个镜像

2 下载下来,运行容器,进入容器安装依赖包

docker pull docker.io/digglerz/python3.8

3  把安装好依赖运行的容器docker commit 重新提交镜像

docker run -itd f1f9f4c5559e bash

把 requirements.txt 拷贝到新的 容器里面

docker cp requirements.txt   容器id:

进入到容器里面 执行

pip  install -r requirements.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

然后退出容器

docker commit 36eaae471282  python_docker:3.8

4   docker save -o 重新到处新的镜像 > docker save 8178dfdac83e -o my_python_docker.tar 5  打包上传镜像到客户环境,加载镜像。

最后对比两个方法的 docker 镜像的文件大小,方法一 的镜像文件大小为 970MB,方法二的镜像文件大小为230MB 



文章转载自yangyidba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论