2017级系统综合实践 第5次实践作业

作业链接

1.构建镜像

  • Dockerfile

    FROM python:3
    WORKDIR /usr/src/app
    #工作目录
    COPY requirements.txt ./requirements.txt
    #依赖声明
    RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    #换清华源,并安装依赖
    
    COPY myapp/hello.py /usr/src/app/ 
    VOLUME /usr/src/app
    
    ENTRYPOINT ["python"]
    CMD ["hello.py"]
    
  • requirements.txt

    PyMySQL
    opencv-python
    
  • build镜像

    docker build -t mypython .

    2.部署运行

  • helloworld

    docker run --rm myphon

    --rm参数使得容器在运行后直接自动删除

  • 日历
# 引入日历模块
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))

sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --rm mypython date.py

  • MySql

    开启原有的数据库容器

    查看原有的 test 表内容

mysql_db.py

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='hrm_mysql'        #MySQL容器名
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 test values(6666666,'pikaqiu');" 
db.insert_data(sql1)

print(db.select_all())

db.conn_close()

运行 python 容器

sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --link=hrm_mysql --rm mypython sql.py

这里link参数是用来现容器间的互访

验证结果

  • OpenCv

    import cv2
    
    #
    src=cv2.imread('test.jpg')
    
    # 垂直翻转
    img=cv2.flip(src,0)
    
    
    # 写入文件
    cv2.imwrite("test-rotated.jpg", img)
    print('Successed.')
    
    

    sudo docker run -it -v /home/hua/list5/myapp:/usr/src/app --rm mypython opencv.py


3.总结

难度不大

时间在三个小时左右

posted @ 2020-05-21 20:34  花染梦  阅读(162)  评论(0编辑  收藏  举报