码迷,mamicode.com
首页 > 其他好文 > 详细

系统综合实践_5

时间:2020-05-20 18:27:36      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:参数   cache   综合   err   error:   world   关闭数据库   mys   calendar   

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

标签:参数   cache   综合   err   error:   world   关闭数据库   mys   calendar   

原文地址:https://www.cnblogs.com/honger125/p/12917337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!