通过容器完成简单helloworld、日历输出、mysql数据库操作、opencv程序的部署运行
1.项目结构
2.搭建python镜像
(1)requirements.txt
PyMySQL
opencv-python
(2)Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
COPY app/helloworld.py /usr/src/app/
VOLUME /usr/src/app
ENTRYPOINT ["python"]
CMD ["helloworld.py"]
(3)搭建镜像
3.运行Python程序
(1)helloworld
print('Hello World!')
(2)日历输出
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
(3)mysql数据库操作
import pymysql
# 打开数据库连接
db = pymysql.connect("sql", "docker", "123456", "docker_mysql")
# 第一个参数是本地容器名字
# 第二三个参数是数据库的使用用户与密码
# 第四个参数是数据库名称
# 创建游标对象
cursor = db.cursor()
# 先查询一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# SQL插入语句
sql = """insert test(id,name)
values('031702526','zh')"""
cursor.execute(sql)
db.commit()
# 插入完成后再读取一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# 关闭数据库连接
db.close()
(4)opencv程序的部署运行
import cv2
# flags传入0表示灰度图像, 1表示彩色图像
img=cv2.imread('test.jpg',flags=1)
# 获取图片尺寸
rows,cols=img.shape[:2]
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M=cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
# 第三个参数是输出图像的尺寸中心
dst=cv2.warpAffine(img,M,(cols,rows))
# 写入文件
cv2.imwrite("test-rotated.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
print('rotated and saved.')
原图:
结果图:
4.遇到的问题和解决办法
(1)搭建镜像不成功
忘记在最后加上 .
(2)数据库连接不成功
找不到之前实验的容器,将之前mysql实验重新做了一次
(3)这次实验比上次实验要轻松许多,花了一个下午来进行实验,遇到的问题也通过问同学一一解决了