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))
(3) mysql操作
-
编写文件:
黄色标注的是运行完自动生成的文件
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_name def 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操作
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小时。