• 第5次实践作业


    系统综合实践第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"]
    

    2.requirements.txt

    PyMySQL
    opencv-python
    

    3.build镜像

    文件目录结构如下:(暂时没提到的文件在博客后面的内容中)

    cd WorkPath
    docker build -t mypython .

    二、部署运行

    1.helloworld

    docker run --rm mypython

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

    2.日历

    date.py

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

    docker run -it -v /home/kingdom/WorkPath/myapp:/usr/src/app --rm mypython date.py

    3.MySQL

    这里用到的数据库容器请参考我的第二次系统综合实践作业博客

    https://www.cnblogs.com/Jorgensen/p/12749012.html#二、实现一个自定义的数据库容器服务)

    参考我的博客先build镜像
    docker build -t mysql_zqz .
    然后运行MySQL容器
    docker run -d -p 13306:3306 --name mysql_zqz mysql_zqz

    docker ps -a

    进入容器
    docker exec -it mysql_zqz /bin/bash

    使用kingdom账户登录mysql,密码是123456
    mysql -u kingdom -p

    连接到docker_mysql这个数据库
    use docker_mysql;

    显示这个数据库中所有的表格
    show tables;

    选择test表的所有内容
    select * from 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='mysql_zqz'        #MySQL容器名
    username='kingdom'    #用户名
    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('031702400',0);" %table_name
    db.insert_data(sql1)
    
    print(db.select_all())
    
    db.conn_close()
    

    打开一个新的终端,运行python容器
    docker run -it -v /home/kingdom/WorkPath/myapp:/usr/src/app --link=mysql_zqz --rm mypython sql.py
    这里link参数是用来现容器间的互访,mysql_zqz是MySQL容器的容器名

    在MySQL容器这边验证下插入是否成功

    4.opencv

    opencv.py

    # 仿射变换
    import cv2
    import numpy as np
    img = cv2.imread('picture.jpg')
    rows,cols,ch = img.shape
    pts1 = np.float32([[50,50],[200,50],[50,200]])
    pts2 = np.float32([[10,100],[200,50],[100,250]])
    M = cv2.getAffineTransform(pts1,pts2)
    dst = cv2.warpAffine(img,M,(cols,rows))
    # 写入文件
    cv2.imwrite("picture_new.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    

    docker run -it -v /home/kingdom/WorkPath/myapp:/usr/src/app --rm mypython opencv.py

    三、总结

    遇到的问题:本次实验比较简单,基本没有遇到问题.
    用时:实验+博客=3h

  • 相关阅读:
    服务器又100%了,上一个挖矿病毒解决完,这几天又来了一个新的挖矿病毒。。。。
    一些面试题
    家庭应急储备物资分类
    所学习的docker
    Mysql主从复制原理及同步延迟问题
    关于git
    小程序的get和post需要注意的地方
    CSS3 3D转换
    transform CSS3 2D知识点汇总
    HTML5基础知识总结(一)
  • 原文地址:https://www.cnblogs.com/Jorgensen/p/12924200.html
Copyright © 2020-2023  润新知