ubuntu容器运行python_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数据库包为例,需要添加pymysql和cryptography

注意: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中加入qrcode和Image

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第三方库同理,不再赘述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值