系统综合实践第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
posted @ 2020-05-21 15:52  两三  阅读(211)  评论(0编辑  收藏  举报