zoukankan      html  css  js  c++  java
  • Ubuntu环境的docker实践——python

    创建运行python代码的Dockerfile

    python代码的运行需要安装python环境,而提前将python环境封装在容器里面,可以提供比虚拟机更轻量级的部署成本。
    此处以python3为例,描述通过容器运行python3代码的过程。基础容器为docker hub上的python容器
    需要为待运行的python3代码创建Dockerfile文件:

    FROM python:3
    
    WORKDIR /usr/src/app
    
    COPY requirements.txt ./
    RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    
    COPY apps/hello.py /usr/src/app/
    VOLUME /usr/src/app
    
    ENTRYPOINT ["python"]
    CMD ["hello.py"]
    

    在容器中运行简单的python代码

    为了方便代码修改,在启动容器时,直接挂载本地磁盘目录到容器指定的工作目录中,由于程序运行完就结束了,所以在得到结果之后可以用--rm 删掉容器。

    • 无交互式输入
      Dockerfile已经把helloworld代码拷进容器了,所以后面不需要附加py文件名

    • 有交互式输入
      代码来源

    注意:由于用到了input,需要输入内容,因此运行容器的时候需要用到-it参数,否则会报EOFError: EOF when reaeding a line的错误。

    以上两个例子并不需要在requirement.txt中添加额外的包,下面的就需要了。

    测试python 3和mysql数据库的连接

    以python3的mysql数据库包为例,需要添加pymysqlcryptography
    注意:cryptography如果没安装,我遇到了报 RuntimeError: cryptography is required for sha256_password or caching_sha2_p 的错误。

    代码来源
    数据库信息:容器部署的mysql,运行在网络dockerlamp_lamp上,修改代码来源中的数据库信息,数据库地址使用mysql的容器名,数据库使用TestDB测试(需提前建好),用户名和密码自定义
    运行结果:

    在mysql容器中查看数据库表操作结果:

    测试opencv库

    opencv提供了计算机视觉和图像处理的很多方法,并且python有专门的库opencv-python,要运行opencv程序需要在容器中安装opencv-python库
    方法:

    • 在requirement.txt中加入opencv-python,同时,把作为矩阵运算很强大的numpy库也加进去,然后build镜像。
    • 启动容器,挂载本地目录将示例代码拷入容器中运行即可。
    import cv2
    import numpy as np
    img=cv2.imread('test.jpeg')
    print(img.item(10,10,2))
    img.itemset((10,10,2),100)
    print(img.item(10,10,2))
    

    cv2即为opencv

    测试qrcode库

    qrcode库提供了二维码生成功能,依赖于Image库,要在requirement.txt中加入qrcodeImage

    import qrcode
    
    data = 'Hello World!'
    img_file = '/usr/src/app/qrcode.png' 
    
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4
    )
    # 传入数据
    qr.add_data(data)
    
    qr.make(fit=True)
    
    # 生成二维码
    img = qr.make_image()
    
    # 保存二维码
    img.save(img_file)
    # 展示二维码
    img.show()
    

    如果Image库没有安装,会报错:

    准备就绪之后,启动容器并且挂载本地目录,程序会把生产的二维码图片保存在工作目录,并且同步到本地目录。

    其他的python第三方库同理,不再赘述。

  • 相关阅读:
    Express中间件简介
    Express中间件概念
    浏览器cookie插件
    node=day7
    cookie可视化操作工具---EditThisCookie
    node之cookie和session对比
    node通过session保存登录状态
    浅谈表单同步提交和异步提交
    node.js服务端存储用户密码md5加密
    jQuery的ajax里dataType预期服务器返回数据类型
  • 原文地址:https://www.cnblogs.com/fjlinww/p/12747234.html
Copyright © 2011-2022 走看看