第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  小同学-  阅读(142)  评论(0编辑  收藏  举报