第5次实践作业
一、Python镜像环境搭建
创建py_docker目录,并创建apps文件夹用于存放py程序
- 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"]
- requirements
PyMySQL
opencv-python
创建镜像
sudo docker build -t mypython .
二、运行程序
(1)helloworld
- helloworld.py
print("hello world")
运行程序
sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython helloworld.py
(2)日历输出
- date.py
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
运行程序
sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython date.py
(3)mysql数据库操作
使用实验二中的数据库镜像,运行容器
docker run --name xxmysql -d lxxmysql
- mysql_db.py (是python操作数据库代码)
import pymysql
class 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='xxmysql' #容器名
username='docker' #用户名
password='123456' #密码
db_name='docker_mysql' #数据库名
table_name='test' #表名
db=Mysql_db(ip, username, password, db_name,table_name)
db.db_conn()
sql1="insert into %s values(123456789,'aaa');" %table_name
db.insert_data(sql1)
print(db.select_all())
db.conn_close()
运行sql.py代码
sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm --link=xxmysql mypython sql.py
使用docker用户登录数据库 ,切换至docker_mysql数据库,两次查看表,看到插入的数据
(4)opencv程序的部署运行
- opencv.py (简单的生成灰度图形)
import cv2
img = cv2.imread("pic.jpg", 0)
cv2.imwrite('result.jpg', img)
print("success")
运行程序
sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython opencv.py
- pic.jpg 原图
- result.jpg 产生的灰度图像
三、遇到的问题和解决方法
这次实验内容比较简单,代码也很少,很顺利的完成了
四、完成作业所花的时间
学习该实践的内容:1小时
查阅资料:1小时
编写代码:1小时
解决问题:0.5小时
博客编写:1小时
合计:4.5小时