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


    1.项目结构

    .
    ├── Dockerfile
    ├── python
    │ ├── cv.py
    │ ├── date.py
    │ ├── db.py
    │ ├── Dockerfile
    │ ├── ex5.png
    │ ├── hello.py
    │ └── new.png
    └── requirements.txt

    2.python容器

    (1)文件

    • requirements.txt
    PyMySQL
    opencv-python
    
    • Dockerfile
    FROM python
    WORKDIR /usr/src/app
    
    COPY requirements.txt ./
    
    RUN pip install  --default-timeout=100 --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    
    VOLUME /usr/src/app
    ENTRYPOINT [ "python" ] # 实现命令行式调用容器
    CMD [ "hello.py" ] # ENTRYPOINT默认参数
    

    (2)构建镜像

    • 命令:sudo docker build -t ex5_image .

    (3)运行

    • hello.py

    print('hello world')

    • 命令sudo docker run --rm -v /home/ex5/python:/usr/src/app ex5_image

      • 参数说明
        • 使用-v将本地目录挂载到python工作目录以方便代码修改
        • --rm运行完毕后自动移除容器
        • 默认使用Dockerfile中指定的hello.py作为参数
    • date.py
      sudo docker run -it --rm -v /home/ex5/python:/usr/src/app ex5_image date.py

      • 参数说明
        • date.pyENTRYPOINT的参数
        • 由于要实现交互,所以要加-it参数
    • 数据库操作

      • 运行实验4的数据库
      • db.py
        import pymysql
        
        db = pymysql.connect("msql", "root", "123456", "ex4_db")
        
        # 创建游标对象 cursor
        cursor = db.cursor()
        
        # 插入
        sql = """INSERT INTO myuser(username,phone)
                 VALUES ('Yuhao Lin','1247189541')"""
        try:
           cursor.execute(sql)
           # commit
           db.commit()
        except:
           # 回滚
           db.rollback()
        
        # 查询
        sql = """SELECT * FROM myuser"""
        try:
           cursor.execute(sql)
           results = cursor.fetchall()
           for row in results:
               # 打印结果
              print ("username=%s,phone=%s" % (row[0],row[1]))
        except:
           print ("ERROR")
        db.close()
        
      • 命令sudo docker run -it --rm -v /home/ex5/python:/usr/src/app --link=msql:msql ex5_image db.py

      • 参数说明:
        • --link=容器名:容器别名` 实现容器间的互访
    • opencv

    import cv2
    
    # 生成图片
    img = cv2.imread("ex5.png", 0)
    #  等待图片的关闭
    cv2.waitKey()
    # 保存
    cv2.imwrite("new.png", img)  
    
    - 命令`sudo docker run -it --rm -v /home/ex5/python:/usr/src/app ex5_image cv.py`
    

    3.用时&心得

    时间统计

    • 查资料0.5小时
    • 动手2小时
    • 写博客0.5小时
    • 合计3小时左右

    心得

      这次的实验做的很快,老师给的参考资料帮了很大的忙,当然也有“经历风雨”的原因,心理承受能力大大加强,啥不懂?搜就完事了。
  • 相关阅读:
    MongoDB学习笔记~Mongo集群和副本集
    知方可补不足~写了一个计算数据表占用存储空间的方法
    MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法
    MongoDB学习笔记~索引提高查询效率
    MongoDB学习笔记~客户端命令行的使用
    Android动画效果translate、scale、alpha、rotate详解
    CacheHelper工具类的使用
    [置顶] vs2008 编译adb 支持4.2 android 系统(增加push 命令的进度)
    如何在cocos2d项目中enable ARC
    敏捷开发用户故事系列之十一:CSDN博客用户故事分析
  • 原文地址:https://www.cnblogs.com/fangdaoyou/p/12923764.html
Copyright © 2020-2023  润新知