系统综合实践第五次作业

一、Python镜像环境搭建

1.pull python镜像

sudo docker pull python

2.编写相关文件


Dockerfile文件:

FROM python:3
MAINTAINER wrq
WORKDIR /usr/src/app
COPY requirements.txt ./

# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple 

ENTRYPOINT ["python"]
CMD ["hello.py"]

Requirements:
PyMySQL
opencv-python

3.创建镜像

sudo docker build -t mypython .



二、Hello World

hello.py:

print('hello world!')

运行容器:

sudo docker run -it -v /home/system/test5/apps:/usr/src/app --rm mypython helloworld.py


三、日历输出

date.py:

import calendar
 
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
 
# 显示日历
print(calendar.month(yy,mm))

运行容器:

sudo docker run -it -v /home/system/test5/apps:/usr/src/app --rm mypython date.py


四、mysql数据库操作

使用实验二中的数据库镜像,运行容器。

sudo docker run --name testmysql -d testrmysql


mysql_db.py:

import pymysql

class Mysql_db():

    def __init__(self,ip,username,password,db_name,table_name):

        self.ip=ip
        self.username=username
        self.password=password
        self.db_name=db_name
        self.table_name=table_name

    def db_conn(self):

        #打开数据库连接
        self.conn=pymysql.connect(self.ip,self.username,self.password,self.db_name)

        #创建一个游标
        self.cursor=self.conn.cursor()

    #创建表格
    def create_table(self,sql):

        self.cursor.execute('drop table if exists %s;' %self.table_name)

        self.cursor.execute(sql)

    #插入数据
    def insert_data(self,sql):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()

    #查询数据
    def select_all(self):

        sql='select * from %s' %self.table_name
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    #更新数据库数据
    def update_data(self):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()        

    #删除数据
    def delete_data(self):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()


    #关闭数据库
    def conn_close(self):

        self.conn.close()

sql.py:

from mysql_db import Mysql_db

ip='testmysql'          #容器名
username='rae'         #用户名
password='123456'      #密码
db_name='docker_mysql' #数据库名
table_name='user'    #表名
db=Mysql_db(ip, username, password, db_name,table_name)

db.db_conn()

sql1="insert into %s values(2,'aaa');" %table_name
db.insert_data(sql1)

print(db.select_all())

db.conn_close()

运行sql.py代码:

sudo docker run -it -v /home/system/test5/apps:/usr/src/app --rm --link=testmysql mypython sql.py


在mysql容器中验证结果:

五、opencv程序的部署运行

opencv.py:

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.')

运行容器:

sudo docker run -it -v /home/system/test5/apps:/usr/src/app --rm mypython opencv.py


原图:

旋转后:

六、问题与总结

1.opencv程序的部署运行时出现如下报错:

检查后发现是app路径问题,还是要小心一点。

七、小结

本次实验花了大概四个小时。
相对实验四真的轻松了很多,总体过程也比较顺利。本次实验学会如何使用使用docker容器运行Python程序,对之前一些操作也进行了复习,感到博客步骤写细一点还是有助于自己复习了。

posted @ 2020-05-22 11:36  RAEQI  阅读(159)  评论(0编辑  收藏  举报