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


    一,python镜像定制

    • 文件结构

    • Dockerfile

    FROM python:3.7
    MAINTAINER tt
    # 设置工作目录
    WORKDIR /app
    # 添加依赖声明文件
    COPY requirements.txt ./
    RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    VOLUME /usr/src/app
    # 实现命令行式调用容器
    ENTRYPOINT ["python"]
    # ENTRYPOINT默认参数
    CMD ["hello.py"]
    
    • requirements(为之后的数据库操作和OpenCV程序引入依赖)
    PyMySQL
    opencv-python
    
    • 构建镜像
      sudo docker build -t python_test .

    二,运行py程序

    1,测试

    • hello.py
      print('hello world')
    • 运行py
      sudo docker run -it --rm -v /home/ubuntu/mypy/app:/app python_test opencv.py

    2,日历输出

    • date.py
    import calendar 
    # 输入指定年月
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
     
    # 显示日历
    print(calendar.month(yy,mm))
    
    • 运行py
      sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile python_test date.py

    3,mysql数据库操作

    • mysql.py
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("mysql", "tong", "123456", "docker_mysql")
    
    cursor = db.cursor()
    sql = """select * FROM test"""
    cursor.execute(sql)
    results = cursor.fetchall()
    print(results)
    
    # SQL插入语句
    sql = """insert test(id,name,sex)
    	values(002,'fwh','girl')"""
    cursor.execute(sql)
    db.commit()
    
    # 插入完成后再读取一次数据库数据
    sql = """select * FROM test"""
    cursor.execute(sql)
    results = cursor.fetchall()
    print(results)
    
    # 关闭数据库连接
    db.close()
    
    • 运行程序
      sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile --link=zzq_mysql python_test db.py


    4,opencv程序的部署运行

    • opencv.py
    import cv2
    import numpy as np
    image = cv2.imread('test.png')
    result = image[250:1700, 0:900]
    cv2.imwrite('test_result.png', result)
    
    • 运行程序
      sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile python_test opencv.py

    • 效果图展示:

    三,遇到的问题和解决方法以及花费的时间

    • 遇到的问题:
      一开始把image和names混淆了,一直找不到对应的容器。解决方法:docker ps查看正确的名字。
    • 花费的时间:
      共1.5小时。
  • 相关阅读:
    JS 的execCommand 方法 做的一个简单富文本
    机器学习入门
    code practice websites
    机器学习 入门参考资料
    const型变量与函数重载
    数组是否应该初始化?
    翻译:编译器内部的秘密微软的编译器是如何解析Try/Catch/Throw的
    在C++中用C#风格设置类的属性值

    记可敬可佩的老车同志
  • 原文地址:https://www.cnblogs.com/qingke1314/p/12936403.html
Copyright © 2020-2023  润新知