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


    1、Python自定义镜像搭建

    • 项目结构

    • Dockerfile

    FROM python:3.7
    MAINTAINER LZS
    # 设置工作目录
    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.txt
    #requirements.txt
    PyMySQL
    opencv-python
    
    • 搭建镜像
    sudo docker build -t docker-python .
    

    2、运行Python程序

    • 1.helloworld

    hello.py

    print('hello world')
    

    运行

    sudo docker run --rm -v /home/ubuntu/homework5/app:/app docker-python hello.py
    

    • 2.日历输出

    date.py

    import calendar
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
    print(calendar.month(yy,mm))
    

    运行

    sudo docker run -it --rm -v /home/ubuntu/homework5/app:/app docker-python date.py
    

    • 3.mysql数据库操作

    用于创建一个新的网络连接

    sudo docker network create --subnet=172.1.0.0/16 py_mysql
    

    运行mysql容器

    sudo docker run --network py_mysql --name mysql_lzs -d mysql:lzs
    sudo docker exec -it mysql_lzs /bin/bash
    

    mysql.py

    import pymysql
    # 打开数据库连接
    db = pymysql.connect(host="mysql_lzs",user="lzs",password="123456",database="docker_mysql" )
     
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    
    # 使用 execute()  方法执行 SQL 查询
    cursor.execute("SELECT VERSION()")
    
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
    
    print("Database version : %s " % data)
    
    # 使用预处理语句创建表
    sql = """CREATE TABLE user (
    	 id  CHAR(10) NOT NULL,
    	 name  CHAR(20) )"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    
    # SQL 插入语句
    sql = """INSERT INTO user(id,name)
    	 VALUES ('01', 'roll')"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    
    # SQL 查询语句
    sql = """SELECT * FROM user"""
    
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 获取所有记录列表
       results = cursor.fetchall()
       for row in results:
          idd = row[0]
          name = row[1]
           # 打印结果
          print ("id:%s,name:%s" % 
    	     (idd, name ))
    except:
       print ("Error: unable to fetch data")
    # 关闭数据库连接
    db.close()
    

    运行python

    sudo docker run --rm -v  /home/ubuntu/homework5/app:/app --network py_mysql docker-python mysql.py
    

    • 4.opencv程序的部署运行

    opencv.py

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

    运行

    sudo docker run --rm -v /home/ubuntu/homework5/app:/app docker-python opencv.py
    

    小结

    • 问题和解决办法

    问题:数据库连接时出错

    原因:数据库镜像构建时,没有加入docker这一用户
    解决:将mysql.py中连接数据库那一行代码的user参数改为已创建的用户名

    • 用时

    2小时

  • 相关阅读:
    iOS9请求https问题-记录
    邓白氏码的申请-iOS公司开发者账号准备
    iOS学习笔记---oc语言第八天
    iOS学习笔记---oc语言第七天
    iOS学习笔记---oc语言第六天
    一道例题的详解
    使用使用for in 语句,并对数组中元素进行了增删操作,报错却不知怎么办?
    iOS学习笔记---oc语言第五天
    iOS学习笔记---oc语言第四天
    Xcode编译异常和警告汇总(持续更新中)
  • 原文地址:https://www.cnblogs.com/tinygod/p/12934294.html
Copyright © 2020-2023  润新知