假期处理某些技术的事情,花费2天,其中一半时间是处理 Python 安装环境的问题。
客户侧的机器上默认是 Python 2.7.5 ,没有标准的 Python3 环境,而且不能联网,也就不能方便的使用 yum 工具安装 Python3 和其他相关依赖的包 和相关模块。
其实最开始是 惯性思维 逐步通过找包的方式 初始化 Python3 的环境,经过一番尝试,依赖太多解决 ,yum 源又不完整,故想到使用 docker打包 Python 项目成镜像文件的方式。其实有2种方式。
1 编写dockerfile
FROM python:3.6
WORKDIR /app
ADD . .
RUN pip install -r requirements.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
RUN yum install kde-l10n-Chinese -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
CMD ["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
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