第5次实践作业
1.构建容器
(1)Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
ENTRYPOINT ["python"]
CMD ["hello.py"]
(2)requirements.txt
PyMySQL
opencv-python

(3)建立镜像(root模式下)
sudo su
docker build -t mypython .


2.程序部署
hello.py:
print("hello my friend")
data.py:
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
运行两个Py文件:



(3) mysql操作
- 查看原先mysql-g容器:
![]()


-
编写文件:
![]()
黄色标注的是运行完自动生成的文件
mysql_db.py:(python操作数据库代码)
import pymysqlclass Mysql_db():
def init(self,ip,username,password,db_name,table_name):
self.ip=ip
self.username=username
self.password=password
self.db_name=db_name
self.table_name=table_namedef db_conn(self):
打开数据库连接
self.conn=pymysql.connect(self.ip,self.username,self.password,self.db_name)
创建一个游标
self.cursor=self.conn.cursor()
创建表格
def create_table(self,sql):
self.cursor.execute('drop table if exists %s;' %self.table_name)
self.cursor.execute(sql)
插入数据
def insert_data(self,sql):
#执行SQL语句,发生错误时回滚
try:
self.cursor.execute(sql)
self.conn.commit()except :
self.conn.rollback()查询数据
def select_all(self):
sql='select * from %s' %self.table_name
self.cursor.execute(sql)
return self.cursor.fetchall()更新数据库数据
def update_data(self):
#执行SQL语句,发生错误时回滚
try:
self.cursor.execute(sql)
self.conn.commit()except :
self.conn.rollback()删除数据
def delete_data(self):
#执行SQL语句,发生错误时回滚
try:
self.cursor.execute(sql)
self.conn.commit()except :
self.conn.rollback()
#关闭数据库
def conn_close(self):self.conn.close()
sql.py :(具体的插入代码)以数据库操作中插入为例。
from mysql_db import Mysql_db
ip='mysql-g' #容器名
username='gulyar' #用户名
password='2541241' #密码
db_name='docker_mysql' #数据库名
table_name='user' #表名
db=Mysql_db(ip, username, password, db_name,table_name)
db.db_conn()
sql1="insert into %s values(031702428,'elyar','male');" %table_name
db.insert_data(sql1)
print(db.select_all())
db.conn_close()
- 进入root模式,运行py文件
sudo su
sudo docker run -it --rm -v /home/frx/python/apps:/usr/src/app --link=frxmysql mypython sql.py
![]()

在运行过程中,因为sql.py代码,拼写错误表名,出现一堆报错。。。花了很久才发现问题,并成功解决。
- 查看是否插入成功(启动容器,登陆数据库)
![]()

插入成功!
(4)Opencv操作
-
创建opencv.py,并且放入一张图片
![]()
黄色标记的图片是运行成功py文件以后,自动生成的 -
opencv.py:
import cv2
# flags传入0表示灰度图像, 1表示彩色图像
img=cv2.imread('picture.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("picture2.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
print('finish!!!')
图片成功翻转!!
(5)总结:
本次实验文件目录:
本次实验难度不大,内容较少。随着做实验次数的增加,感觉到自己对linux越来越熟悉了,对终端里的各种报错,也有了一定的解决能力,此外对docker也开始熟悉了,这些都是我的小进步,往后也要认真做实验,学习更多新知。
做实验花了3小时,写博客1.5小时。






浙公网安备 33010602011771号