docker打包 python镜像

1、安装python3
这里有一个bug,由于centos系统自带python2,而且python的软连接是默认指向python2的,
所以,当安装python3之后,就需要修改软连接,将python指向python3。

但是centos 的包管理器yum又是依赖python2的,所以修改了python的软连接之后,yum包管理器
就不能用了。这不是bug吗?

解决办法也是有的。

先安装python3,装完以后,切换到 usr /bin,先删除原来的软连接python,再
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

建立新的软连接,取代旧的。如果以前有pip的,也删掉,建立新的。

然后就是解决yum包管理器不能用的问题了。
yum 安装报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
因为yum包使用python2*等开发,修该为环境修改python3之后有问题,
解决:
修改文件/usr/bin/yum、/usr/libexec/urlgrabber-ext-down头中相应python为#!/usr/bin/python2.7
也就是说大部分的应用直接使用python3,那些适应不过来的,就还用原来的python2。

然后就是练习用docker打包python程序做成镜像了。
其实,这里面也有bug。在安装完python3之后,我更新了一次pip。pip变成了最新的,然后在我打包docker镜像的时候,
它总是提醒我pip不是最新的,所以我就纳闷了。没办法,在Dockerfile里面也加了一层pip更新。还有,之前我是没有将
python软连接到python3的,所以在使用python3和pip3的时候,使用的一直都是python3和pip3。然后,报错,不得已,
python软连接直接到python3,pip也是这样的,然后就碰到了上面的yum包管理器不能用的情况。所以linux配环境有时候是很bug的。

使用下面的命令,可以直接将本机的python环境查询出来,放到一个文本文件中,但是呢?
如果你在Dockerfile文件中对这个文本文件的使用不当,有可能会导致docker去下载依赖的时候失败。
docker打包镜像的过程其实就是一个去docker仓库下载依赖的过程,我们在编写python程序的时候,主要依赖的是python3,
然后我们在编写Dockerfile文件的时候,就会指定python3,然后其它的依赖会下载,补充到python3上。

如果是nodejs的程序,就是在Dockerfile文件中使用npm包管理器去下载依赖,如果是python程序,就是使用pip包管理器去下载依赖。
如果是使用java写的springboot程序,那么有可能就是maven包管理器了。
接下来先看pip管理器管理python。

pip freeze > requirements.txt

下面的图片是文件结构,在dir中是python程序,在Dockerfile中是打包的配置内容,

# 基于的基础镜像
FROM python:3.6.5
# 设置code文件夹是工作目录
#COPY dir .
#COPY dir TCPserver.py
WORKDIR ./dir
ADD . .
# 安装支持
#必须要更新pip,有毛病,有bug
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
#RUN pip install numpy
#CMD ["python", "./dir/TCPserver.py"]
CMD ["python", "./dir/hello.py"]



docker build -t dir .

docker run dir

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44716147/article/details/118280295
今日推荐