• 2017级系统综合实践 第5次实践作业


    作业链接

    1.构建镜像

    • Dockerfile

      FROM python:3
      WORKDIR /usr/src/app
      #工作目录
      COPY requirements.txt ./requirements.txt
      #依赖声明
      RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
      #换清华源,并安装依赖
      
      COPY myapp/hello.py /usr/src/app/ 
      VOLUME /usr/src/app
      
      ENTRYPOINT ["python"]
      CMD ["hello.py"]
      
    • requirements.txt

      PyMySQL
      opencv-python
      
    • build镜像

      docker build -t mypython .

      2.部署运行

    • helloworld

      docker run --rm myphon

      --rm参数使得容器在运行后直接自动删除

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

    sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --rm mypython date.py

    • MySql

      开启原有的数据库容器

      查看原有的 test 表内容

    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='hrm_mysql'        #MySQL容器名
    username='docker'    #用户名
    password='123456'     #密码
    db_name='docker_mysql'#数据库名
    table_name='test'     #表名
    db=Mysql_db(ip, username, password, db_name,table_name)
    
    db.db_conn()
    
    sql1="insert into test values(6666666,'pikaqiu');" 
    db.insert_data(sql1)
    
    print(db.select_all())
    
    db.conn_close()
    

    运行 python 容器

    sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --link=hrm_mysql --rm mypython sql.py

    这里link参数是用来现容器间的互访

    验证结果

    • OpenCv

      import cv2
      
      #
      src=cv2.imread('test.jpg')
      
      # 垂直翻转
      img=cv2.flip(src,0)
      
      
      # 写入文件
      cv2.imwrite("test-rotated.jpg", img)
      print('Successed.')
      
      

      sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --rm mypython opencv.py


    3.总结

    难度不大

    时间在三个小时左右

  • 相关阅读:
    sip
    GDB+GdbServer: ARM程序调试
    Wireshark Lua: 一个从RTP抓包里导出H.264 Payload,变成264裸码流文件(xxx.264)的Wireshark插件
    ffplay播放rtsp视频流花屏问题(含rtsp播放流程图)
    RTP 时间戳的处理
    RTSP
    RTP Tools
    图像编码中的小白问题sps ,pps ,nalu ,frame ,silce ect....
    H264中的SPS、PPS提取与作用
    VLC播放RTSP视频延迟问题
  • 原文地址:https://www.cnblogs.com/huaranmeng/p/12933443.html
Copyright © 2020-2023  润新知