前言
本次作业为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
旋转图片
#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
旋转图片
#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. 连接数据库出错
解决办法: 参考链接