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

最终项目结构

搭建python镜像

Dockerfile

FROM python:3
MAINTAINER jamwong
WORKDIR /usr/src/app
COPY ./requirements.txt /requirements.txt
COPY app/hello.py /usr/src/app/
RUN pip install -r /requirements.txt -i https://pypi.douban.com/simple  #修改源并安装依赖
ENTRYPOINT ["python"]
CMD ["hello.py"] #默认打开文件

requirements.txt

pyMySQL

opencv-python

hello.py

print("hello world")

构建镜像

sudo docker build -t python:mypy .

创建容器并运行简单程序

sudo docker run -v /home/ubuntu/docker-py/app:/app --rm python:mypy # 容器运行完后就删除

日历输出

date.py

import calendar
yy = int(input("年份:"))
mm = int(input("月份:"))
print(calendar.month(yy,mm))
docker run -it -v /home/jamwong/docker-py/app:/usr/src/app --rm python:mypy date.py # 使用-v将本地目录挂载到python工作目录 

mysql数据库操作

mysql.py (重装了虚拟机以后之前的数据库镜像没了 又重新折腾了一次🤯)

import pymysql

#打开数据库连接,localhost替换成ip地址,后面依次是用户名,密码,数据库名
db = pymysql.connect("127.0.0.1","jamwong","123456","docker_mysql" )

#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

#关闭数据库连接
db.close()
docker run -v /home/jamwong/docker-py/app:/usr/src/app --rm python:mypy mysql.py

OpenCV

opencv.py

import cv2

# flags传入0表示灰度图像, 1表示彩色图像
img=cv2.imread('test.jpg',flags=1)

# 获取图片尺寸
rows,cols=img.shape[:2]

# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M=cv2.getRotationMatrix2D((cols/2,rows/2),48,0.7)

# 第三个参数是输出图像的尺寸中心
dst=cv2.warpAffine(img,M,(cols,rows))

# 写入文件
cv2.imwrite("new-test.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
docker run -v /home/jamwong/docker-py/app:/usr/src/app --rm python:mypy opencv.py

总结:

  • 一开始docker run运行date.py代码时忘记添加-it使用交互式(因为需要用户输入年、月),导致报错。
  • 这次作业相对来说比较简单,只用了一下午的时间,整个过程也比较顺利。
posted @ 2020-05-22 16:17  Jamwong  阅读(121)  评论(0编辑  收藏  举报