系统综合实践 第5次实践作业
作业地址
(一)Python容器文件配置
- 目录结构
- Dockerfile
FROM python
MAINTAINER yezi
WORKDIR /app
#添加依赖文件
COPY requirements*.txt ./
# 修改源并设置安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
#实现命令行式调用容器
ENTRYPOINT ["python"]
# ENTRYPOINT默认参数
CMD ["hello.py"]
- requirement.txt
PyMySQL
opencv-python
- 镜像构建
sudo docker build -t docker-python .
sudo docker images
命令查看
(二)程序的部署运行
(1)helloworld
- hello.py
print("hello world")
将本地目录挂载到python工作目录运行,其中--rm
命令运行完毕后自动移除容器
sudo docker run -it -v 本地目录:python工作目录 --rm 镜像名 默认参数
(2)日历输出
- date.py
#引入日历模块
import calendar
# 输入指定年月
y = int(input("输入年份: "))
m = int(input("输入月份: "))
# 显示日历
print(calendar.month(y,m))
执行
- 参考
Python 生成日历
(3)数据库操作
数据库使用第二次实验的数据库
- 运行容器
以docker_mysql_c为容器名运行docker_mysql容器
docker run --name docker_mysql_c -p 2208:2208 -d docker_mysql
- 增加+查
#mysql.py文件
import pymysql
# 打开数据库连接
#db = pymysql.connect("数据库容器ip","数据库用户名","用户密码","数据库容器名" )
db = pymysql.connect("172.17.0.2","yezi","123456","docker_mysql" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO user(id,name)
VALUES ('2215','lizi')"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# SQL 查询语句
sql = """SELECT * FROM user"""
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
# 打印结果
for row in results:
print ("id=%s,name=%s" % (row[0],row[1]))
except:
print ("Error: unable to fetch data")
# 关闭数据库连接
db.close()
其中数据库容器ip通过docker inspect mysql容器id
查看(拉到显示内容最后),即图中IPAddress
- 执行
sudo docker run -it -v /home/yeye/docker/python/app:/app --link=容器名 docker-python mysql.py
- 更新+查
只需将上面“增加+查”中的sql插入语句更换
sql = """UPDATE user SET name = 'yeyezi' WHERE id = '0208' """
- 删除+查
同理修改sql语句
sql = """DELETE FROM user WHERE name = 'lizi' """
- 登录数据库
图为原始数据库和上面3个数据库操作后数据库的变化
(4)opencv
- opencv.py
#将图片变成灰度图像
import cv2
import numpy as np
img=cv2.imread('cat.png',0)
cv2.imwrite('turningCat.png',img)
执行
sudo docker run -it -v /home/yeye/docker/python/app:/app --rm docker-python opencv.py
如图为前后变化
- 参考
(三)实验感想
本次实验内容比较简单,按照参考教程没有出什么错。实验共耗时4个小时,其中写博客耗时40分钟。