第5次实践作业

1.构建容器

(1)Dockerfile

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

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

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

(2)requirements.txt

PyMySQL
opencv-python


(3)建立镜像(root模式下)
sudo su
docker build -t mypython .

2.程序部署
hello.py:

print("hello my friend")

data.py:

import calendar

yy = int(input("输入年份: "))

mm = int(input("输入月份: "))

print(calendar.month(yy,mm))

运行两个Py文件:

(3) mysql操作

  • 查看原先mysql-g容器:

  • 编写文件:

    黄色标注的是运行完自动生成的文件
    mysql_db.py:(python操作数据库代码)
    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='mysql-g'          #容器名
             username='gulyar'         #用户名
              password='2541241'      #密码
               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(031702428,'elyar','male');" %table_name
          db.insert_data(sql1)

       print(db.select_all())

        db.conn_close()
  • 进入root模式,运行py文件
    sudo su
    sudo docker run -it --rm -v /home/frx/python/apps:/usr/src/app --link=frxmysql mypython sql.py

在运行过程中,因为sql.py代码,拼写错误表名,出现一堆报错。。。花了很久才发现问题,并成功解决。

  • 查看是否插入成功(启动容器,登陆数据库)

插入成功!


(4)Opencv操作

  • 创建opencv.py,并且放入一张图片

    黄色标记的图片是运行成功py文件以后,自动生成的

  • opencv.py:

import cv2

# flags传入0表示灰度图像, 1表示彩色图像
img=cv2.imread('picture.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("picture2.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
print('finish!!!')
  • 运行py文件:

图片成功翻转!!

(5)总结:

本次实验文件目录:

本次实验难度不大,内容较少。随着做实验次数的增加,感觉到自己对linux越来越熟悉了,对终端里的各种报错,也有了一定的解决能力,此外对docker也开始熟悉了,这些都是我的小进步,往后也要认真做实验,学习更多新知。
做实验花了3小时,写博客1.5小时。

posted @ 2020-05-21 19:12  小同学-  阅读(160)  评论(0)    收藏  举报