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

前言

本次作业为Python专题。Python是将练习使用docker容器运行Python程序。Python是很常用的程序设计语言,但是Python程序的运行依赖于提前的系统环境配置,为了降低系统配置的复杂度,同时减小资源开销,将系统环境容器化是一种解决方案。请根据Python官方镜像的镜像说明,自定义Python镜像文件,将Python程序运行起来。

一.项目结构

├── app
│   ├── date.py
│   ├── db.py
│   ├── hello.py
│   ├── op.py
│   ├── test.py
│   └── test.jpg
├── dockerfile
└── requirements.txt

二.搭建python镜像

  • (1)requirements.txt
PyMySQL
opencv-python
  • (2)Dockerfile
FROM python
MAINTAINER ymq<[email protected]>
WORKDIR /app     #工作目录
COPY ./requirements.txt /requirements.txt  #添加依赖文件
RUN pip install -r /requirements.txt -i https://pypi.douban.com/simple  #修改源并安装依赖
ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
CMD [ "hello.py" ]  #设置ENTRYPOINT默认参数
  • (3)搭建镜像
sudo docker build -t python:test1 .

三.简单程序的部署运行

  • (1)helloworld
# hello.py
print('hello world')
sudo docker run --rm -v /home/ymq/python:test1/app:/app python:test1 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/ymq/python:test1/app:/app python:test1 date.py

  • (3)mysql数据库操作
sudo docker run -it --rm -v /home/ymq/python:test1/app:/app --link=mysql:mysql python:test1  db.py

  • (4)opencv程序
  • 旋转图片

    #op.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-rotated.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    print('rotated and saved.')
    
    sudo docker run -it --rm -v /home/ymq/python:test1/app:/app python:test1 op.py
    

    四、出现的问题及解决办法

    1. 安装python报错(zipimport.ZipImportError: can’t decompress data; zlib not available in Linux)


    原因: 缺少zlib的相关工具包导致的

    解决办法: 安装相关依赖包:yum -y install zlib* 或 sudo apt-get install zlib*

    参考链接 +
    参考链接

    2. 连接数据库出错

    解决办法: 参考链接

    五、总结

    (1)所花时间:

        总计:7h
        ①学习python基础应用       2h
        ②具体实践操作             5.5h
        ③编写博客//总结操作&问题   1h            
    

    (2)经验&感想:

        这次实验比起实验四真的好多了!一开始都挺顺利的,到数据库部分的时候卡了一下,有点心态崩了,然后暂停了几天以后又收拾好心情(不是)重新开始。本次实验学习到了python的一些应用,更重要的是学到了如何使用docker容器运行Python程序,感觉很有意思,也感觉到了对docker的使用越来越熟练了,

    一.项目结构

    ├── app
    │   ├── date.py
    │   ├── db.py
    │   ├── hello.py
    │   ├── op.py
    │   ├── test.py
    │   └── test.jpg
    ├── dockerfile
    └── requirements.txt
    

    二.搭建python镜像

    • (1)requirements.txt
    PyMySQL
    opencv-python
    
    • (2)Dockerfile
    FROM python
    MAINTAINER ymq<[email protected]>
    WORKDIR /app     #工作目录
    COPY ./requirements.txt /requirements.txt  #添加依赖文件
    RUN pip install -r /requirements.txt -i https://pypi.douban.com/simple  #修改源并安装依赖
    ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
    CMD [ "hello.py" ]  #设置ENTRYPOINT默认参数
    
    • (3)搭建镜像
    sudo docker build -t python:test1 .
    

    三.简单程序的部署运行

    • (1)helloworld
    # hello.py
    print('hello world')
    
    sudo docker run --rm -v /home/ymq/python:test1/app:/app python:test1 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/ymq/python:test1/app:/app python:test1 date.py
    

    • (3)mysql数据库操作
    sudo docker run -it --rm -v /home/ymq/python:test1/app:/app --link=mysql:mysql python:test1  db.py
    

  • (4)opencv程序
  • 旋转图片

    #op.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-rotated.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    print('rotated and saved.')
    
    sudo docker run -it --rm -v /home/ymq/python:test1/app:/app python:test1 op.py
    

    四、出现的问题及解决办法

    1. 安装python报错(zipimport.ZipImportError: can’t decompress data; zlib not available in Linux)


    原因: 缺少zlib的相关工具包导致的

    解决办法: 安装相关依赖包:yum -y install zlib* 或 sudo apt-get install zlib*

    参考链接 +
    参考链接

    2. 连接数据库出错

    解决办法: 参考链接

    猜你喜欢

    转载自www.cnblogs.com/signifyu/p/12939006.html
    今日推荐