系统综合实践第5次实践作业
一、python镜像布置
1.目录结构
2.基础文档编写
- Dockerfile
FROM python:3
MAINTAINER zys<1242808025@qq.com>
WORKDIR /app
COPY requirements*.txt ./
# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
ENTRYPOINT ["python"] # 实现命令行式调用容器
CMD ["hello.py"] #默认打开文件
- requirements.txt
PyMySQL
opencv-python
- 搭建镜像
sudo docker build -t docker-python . #自定义镜像
二、简单程序的部署运行
1. hello world
- hello.py
# hello.py
print('Hello world!')
-v将本地目录挂载到python工作目录以方便代码修改
--rm运行完毕后自动移除容器
sudo docker run --rm -v /home/ubuntu/python/app:/app docker-python hello.py
2. 日历输出 菜鸟教程
- date.py
# 引入日历模块
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))
注意:交互式终端需要 -it 指令
sudo docker run -it --rm -v /home/ubuntu/python/app:/app docker-python date.py
3. mysql数据库操作 使用实验二的容器
使用镜像docker-mysql-zys 以后台模式启动一个容器,并将容器命名为mysql5,将容器的3306 端口映射到主机的 3306 端口
sudo docker run --name mysql5 -p 3306:3306 -d docker-mysql-zys
- 进入容器
sudo docker exec -it mysql5 /bin/bash
-使用指定用户名和密码进入数据库使用ZYS账户登录mysql,密码是123456
mysql -u ZYS -p
- 查看已经存在的数据库
show databases;
可以看到此时是一张空表。
use docker-mysql
show tables;
select * from user;
- mysql_db.py
import pymysql
# 打开数据库连接
db = pymysql.connect("mysql5", "ZYS", "123456", "docker_mysql")
# 第一个参数是本地容器名字
# 第二三个参数是数据库的使用用户与密码
# 第四个参数是数据库名称
# 创建游标对象
cursor = db.cursor()
# 先查询一次数据库数据
sql = """select * FROM user"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# SQL插入语句
sql = """insert user(id,name,sex)
values('031702100','yyy','male')"""
cursor.execute(sql)
db.commit()
# 插入完成后再读取一次数据库数据
sql = """select * FROM user"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# 关闭数据库连接
db.close()
- 接着执行以下指令:
sudo docker run -it --rm -v /home/ubuntu/python/app:/app --link=mysql5 docker-python mysql_db.py
这里link参数是用来现容器间的互访,mysql5是容器名
- 最后查看程序成功运行后user表中的内容,可以看到成功地插入了一条数据:
4.opencv
- opcv.py
#简单的生成灰度图形
import cv2
img = cv2.imread("image.jpg", 0)
cv2.imwrite('result.jpg', img)
print("Successlly!")
sudo docker run --rm -v /home/ubuntu/python/app:/app docker-python opcv.py
三、实验小结
这次实验比较简单,耗时和上次比少了非常多,实验过程没遇到什么问题,就是在运行容器时忘记命名,在执行mysql操作时报错“无法找到这个容器”,重新明明就可以了。另外,实验过程发现相关命令的使用还是比较陌生的,需要继续将强。
附上:docker run
项目 | 时间 |
---|---|
搭建镜像 | 0.5h |
各个程序部署运行 | 4h |
博客 | 1h |