美文网首页
python docker 简单使用

python docker 简单使用

作者: 一只当归 | 来源:发表于2021-09-16 17:49 被阅读0次

    一个简单的docker打包python环境到服务器上运行的例子(flask 接口):
    最近项目上遇到在跳转机里面没有docker,但代码需要在里面编写测试,最后上生产又需要打包docker镜像的情况,经过一番折腾后解决了问题:本地docker打包python环境到生产上,跳转机将代码打包到生产上,然后将代码挂载到docker容器里即可。

    项目最终结构:

    image.png

    Dockerfile

    dockerfile 是用于执行docker build时执行里面命令构建镜像的文本文件。
    我这里的文件编写如下:


    image.png
    • FROM :定制镜像,一般为python版本,或系统版本等
    • WORKDIR:生成的镜像容器里面的项目目录,这个参数设置后生成的容器会将项目放到该目录下。
    • COPY : 复制指定目录下的文件到容器内目录下,我这里的两个点代表复制dockerfile目录层级下所有文件到容器中workdir目录下。
    • RUN :在build时执行,我这里是下载所有python依赖
      此外还有CMD命令,用于docker run时启动,因为我这里只是打包python环境不需要用到。

    一、项目生成

    requirements.txt

    image.png

    python所需库列表文件,可以使用

    • pip freeze > requirements.txt 生成,但这种方法如果没有指定虚拟环境,会将整个python环境中的库加载进来。
      我这里使用的是
    • pipreqs ./ 这个方法能只生成当前目录下的python依赖,安装直接使用pip install pipreqs

    gunicorn.conf.py

    Gunicorn的配置文件,Gunicorn+flask是现在常见的部署服务方式,方便且操作简单。
    Gunicorn 是一个 Python 的 WSGI HTTP 服务器,够与各种wsgi web框架协作。我这里就简单的使用几个参数。


    image.png

    Gunicorn以及开启异步的gevent直接pip install即可安装

    start.py

    这里如果能拿出服务器里的requirements.txt文件其实就没必要弄这个了,如果不行的话就需要手动把项目上需要的依赖import 加载出来,然后pipreqs ./生成requirements.txt文件。

    二、环境镜像打包上传

    • 打包镜像
      先打包为镜像,在项目根目录下执行
    docker build -t zqwy:v1 .                   
    

    zqwy为镜像名,v1为版本号,注意后面的'.'代表当前目录

    • 镜像打包
    docker save zqwy:v1 > zqwy.tar                  
    
    • 上传打包镜像
      直接scp或者其它方式上传到服务器上
    scp zqwy.tar hostname@服务器地址: path
    

    把另一台机器上的代码也传上来。
    三、解压环境镜像以及挂载代码

    • 解压镜像
    docker image load <zqwy.tar
    
    • 直接运行
      进入到代码目录
    docker run -rm -d --name pytest -v `pwd`:WORKDIR zqwy:v1 gunicorn start:app -c gunicorn.conf.py
    
    • 代码上传到容器打包成镜像再运行
      先挂载代码到容器里,用 -v命令
    docker run -d --name pytest -v `pwd`:WORKDIR zqwy:v1 bash
    

    再用commit命令将容器打包为镜像

    docker commit -a "xy" -m "my python test" pytest  zqwy:v2
    

    然后再run

    docker run -rm -d  zqwy:v2 gunicorn start:app -c gunicorn.conf.py
    

    相关文章

      网友评论

          本文标题:python docker 简单使用

          本文链接:https://www.haomeiwen.com/subject/vbwrgltx.html