一、项目结构
建立如下文件(其中test-rotated.jpg为opencv运行生成的图片)
二、搭建python镜像
1、requirements.txt
PyMySQL
opencv-python
2、Dockerfile
FROM python:3
MAINTAINER yxy
WORKDIR /app
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt -i https://pypi.douban.com/simple #修改源并安装依赖
ENTRYPOINT ["python"]
CMD ["hello.py"] #默认打开文件
3、 搭建镜像
在python文件夹中打开终端,运行如下命令
sudo docker build -t python:test1 .
三、Hello World
# hello.py
print('hello world')
sudo docker run -it --rm -v /home/ubuntu/python/app:/app python:test1 hello.py
--rm参数使得容器在运行后直接自动删除
四、日历输出
# date.py
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))
sudo docker run -it --rm -v /home/ubuntu/python/app:/app python:test1 date.py
五、mysql数据库操作
未执行py文件前的docker_mysql数据库中test表内容
db.py
import pymysql
# 打开数据库连接
db = pymysql.connect("sql", "docker", "111111", "docker_mysql")
#创建游标对象
cursor = db.cursor()
#SQL插入语句
sql="""insert test(id,name,sex)
values(031700000,'Lin','male')"""
cursor.execute(sql)
db.commit()
#插入完成后再读取一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# 关闭数据库连接
db.close()
执行py文件
sudo docker run -it --rm -v /home/ubuntu/python/app:/app --link=sql:sql python:test1 db.py
执行py文件后的docker_mysql数据库中test表内容
六、opencv程序
#做一个图片翻转功能
import cv2
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.')
sudo docker run -it --rm -v /home/ubuntu/python/app:/app python:test1 op.py
七、实验总结
难度比之前的几次实验要小,大约花费4个小时