第5次实践作业

一、搭建环境

  • 编写requirements.txt
PyMySQL
opencv-python
  • 编写Dockerfile
FROM python
MAINTAINER laika
WORKDIR /app
#工作目录
COPY requirements.txt ./

RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
#修改源并安装依赖
ENTRYPOINT [ "python" ]
# 实现命令行式调用容器
CMD [ "hello.py" ]
#设置ENTRYPOINT默认参数
  • 构建镜像
sudo docker build -t mypython5 .

第5次实践作业_第1张图片
第5次实践作业_第2张图片

二、程序的运行

1.运行hello.py

  • 编写hello.py
print('hello')
  • 运行程序
sudo docker run --rm -v /home/c/Desktop/5/app:/app mypython5 hello.py

2.运行date.py

  • 编写date.py
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
  • 运行程序
sudo docker run -it --rm -v /home/c/Desktop/5/app:/app mypython5 date.py

第5次实践作业_第3张图片

3.运行mysql.py

  • 编写mysql.py
import pymysql
# 打开数据库连接
db = pymysql.connect("laikamysql", "root", "123", "docker_mysql")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# SQL 查询 
cursor.execute("SELECT VERSION()")
 
# 获取数据
data = cursor.fetchone()
 
print ("Database version : %s " % data)

# SQL 插入
sql = """INSERT INTO car(no,band)
         VALUES (7890, 'Benz')"""
try:
   # 执行 SQL 语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 如果错误则回滚
   db.rollback()

# 关闭数据库连接
db.close()
  • 运行程序
sudo docker run --rm -v /home/c/Desktop/5/app:/app --link=laikamysql:laikamysql mypython5 mysql.py

  • 进入数据库中确认结果
sudo docker exec -it laikamysql /bin/bash
mysql -u root -p
use docker_mysql;
select * from car;

第5次实践作业_第4张图片

4.运行cv.py

  • 编写cv.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_done.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
print('rotated!')
  • 运行程序
sudo docker run -it -v /home/c/Desktop/5/app:/app --rm mypython5 cv.py

  • 发现此时成功生成新图片
    第5次实践作业_第5张图片
  • 原图与新图
    第5次实践作业_第6张图片第5次实践作业_第7张图片

三、主要问题和解决方法

  • 执行mysql.py时出错
    第5次实践作业_第8张图片
    原因容器连通,改正后就可以了

四、花费时长

名称 时长(分)
下载Docker compose 30
环境搭建 45
运行程序 180
检查错误 70
整理博客 30

五、感想

花了一定时间在纠错上,但是学到了很多的知识,对docker容器运行Python的操作变得更为熟悉了。

你可能感兴趣的:(第5次实践作业)