zoukankan      html  css  js  c++  java
  • 第五次实践作业

    一.Python镜像布置

    项目结构

    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 ["python","hello.py"] #ENTRYPOINT默认参数
    

    构建镜像

    sudo docker build -t ex5_image .
    

    二.在容器中运行Python代码

    Helloworld

    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

    # Filename : date.py
    # author by : weng
     
    # 引入日历模块
    import calendar
     
    # 输入指定年月
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
     
    # 显示日历
    print(calendar.month(yy,mm))
    

    运行

    sudo docker run -it --rm -v /home/ex5/python:/usr/src/app ex5_image date.py
    

    参数说明

    • date.pyENTRYPOINT的参数

    • -it以实现交互

    Mysql数据库操作

    使用实验二的数据库

    运行数据库

    查看未执行python文件前的docker_mysql数据库中的test表

    database.py

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("mysql", "weng", "123456", "docker_mysql")
    #创建游标对象
    
    cursor = db.cursor()
    #先查询一次数据库数据
    sql = """select * FROM test"""
    cursor.execute(sql)
    results = cursor.fetchall()
    print(results)
    
    #SQL插入语句
    sql="""insert test(id,name)
    	values(666,'wengweng')"""
    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/ex5/python:/usr/src/app --link=mysql-5:mysql ex5_image database.py
    

    查看执行完python文件后的docker_mysql数据库中的test表

    Opencv程序部署

    updown.py

    #图片翻转
    import cv2
    img=cv2.imread('test.jpg',flags=1)
    rows,cols=img.shape[:2]
    M=cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
    dst=cv2.warpAffine(img,M,(cols,rows))
    cv2.imwrite("test-new.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    print('rotated and saved.')
    

    运行前的图片

    运行代码

    sudo docker run -it --rm -v /home/ex5/python:/usr/src/app  ex5_image updown.py
    

    运行后的图片

    三.总结

    ​ 做实验的时候遇到了蛮多问题的,特别是做MySQL部分时,使用之前实验二构建的容器一直登录不进去数据库。折腾了好久还是登录不了,网上查了原因解决起来步骤太麻烦了。后面试着使用那个镜像再创建一个容器,终于可以正常登录了。后面也就好做了。

  • 相关阅读:
    sdk 今日头条_字节跳动又一Android开源力作!全新视频动画特效SDK
    Android播放透明视频(转载)
    git remote: warning: suboptimal pack
    'gitclone报错fatal:protocolerror:badpackheader'
    解决 Maven 无法下载 fastdfs-client-java 依赖。
    教我兄弟学Android逆向12 编写xposed模块
    教我兄弟学Android逆向11 动态调试init_array
    CommunicationsException
    使用css给table表格表头添加斜线(斜线表格)
    [SAA + SAP] 28. Monitoring
  • 原文地址:https://www.cnblogs.com/ZKweng/p/12937710.html
Copyright © 2011-2022 走看看