系统综合实践_5

Posted honger125

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统综合实践_5相关的知识,希望对你有一定的参考价值。

1、Python镜像构建


  • 项目结构

技术图片

  • 配置文件

    • Dockerfile

      FROM python:3
      
      WORKDIR /usr/src/app
      
      COPY requirements.txt ./
      RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
      
      COPY code/helloworld.py /usr/src/app/
      VOLUME /usr/src/app
      
      ENTRYPOINT ["python"]
      CMD ["helloworld.py"]
      
    • requirement.txt

      Pymysql
      opencv-python
      
  • 构建镜像

            docker build -t my_py .
    

    技术图片

2、部署程序


  • helloworld

    • 程序代码
      print(‘hello world !‘)
    
    • 构建容器

    执行命令,参数说明:
    ????-v:将本地目录挂载到python工作目录以方便代码修改
    ????--rm:运行完毕后自动移除容器。

           docker run --rm -v /home/hcr/python/code:/usr/src/app my_py
    

    技术图片

  • 日历输出

    • 程序代码
      import calendar
    
      # 输入指定年月
      yy = int(input("输入年份: "))
      mm = int(input("输入月份: "))
    
      #设置第一天是星期天
      calendar.setfirstweekday(firstweekday=6)
    
      # 显示日历
      print(calendar.month(yy,mm))
    
    • 构建容器

    执行命令,参数说明:
    ????-it:声明需要交互式终端以读取输入

            docker run -it --rm -v /home/hcr/python/code:/usr/src/app my_py date.py
    

    技术图片

  • mysql数据库操作(使用实验二的数据库容器)

    • 程序代码
      import pymysql
    
      # 打开数据库连接
      db = pymysql.connect("hcr_mysql", "docker", "123456", "docker_mysql")
    
      # 创建游标对象
      cursor = db.cursor()
    
      # 查询数据库数据
      sql = """select * FROM user"""
      cursor.execute(sql)
      results = cursor.fetchall()
      print(results)
    
      # 插入
      sql = """insert user(id,username)
            values(‘02‘,‘darling‘)"""
      cursor.execute(sql)
      db.commit()
    
      # 插入完成后再读取一次数据库数据
      sql = """select * FROM user"""
      cursor.execute(sql)
      results = cursor.fetchall()
      print(results)
    
      # 关闭数据库连接
      db.close()
    
    • 构建容器
      docker run --rm -v /home/hcr/python/code:/usr/src/app --link=hcr_mysql my_py sql.py
    

    技术图片

  • Opencv

    • 程序代码
      import cv2
    
      img = cv2.imread("test.jpg", 1)
      res = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
      cv2.imwrite(‘result.jpg‘, res)
    
      print("success!")
    
    • 构建容器
            docker run -it --rm -v /home/hcr/python/code:/usr/src/app my_py opencv.py
    

    技术图片

    • 查看结果

    ????左图为原始图片,右图是执行程序后生成的图片

    技术图片

3、问题 & 解决


????在构建日历输出的容器时报EOFError: EOF when reaeding a line的错误,查阅后了解到,由于日历输出的程序用到了input,需要输入内容,因此运行容器的时候需要用到-it参数,添上即可。

技术图片

4、感想


????此次实验大概花了3h,相比于上次实验,这次实验做的可真的是太轻松了。

以上是关于系统综合实践_5的主要内容,如果未能解决你的问题,请参考以下文章

系统综合实践_4

校园图书售卖系统/二手书交易系统 软件工程综合实践

第5次系统综合实践

第3次系统综合实践

第3次系统综合实践

第7次系统综合实践 26组