北在南方

V1

2022/05/04阅读:6主题:默认主题

docker 部署 python3 镜像

问题背景

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

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

解决

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

方法一 dockerfile

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

方法二 直接利用官方的 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 镜像的文件大小

分类:

后端

标签:

后端

作者介绍

北在南方
V1