zoukankan      html  css  js  c++  java
  • 第5次实践作业

    一、Python镜像环境搭建

    创建py_docker目录,并创建apps文件夹用于存放py程序

    • Dockerfile
    FROM python:3
    WORKDIR /usr/src/app
    COPY requirements.txt ./
    
    # 修改源并安装依赖
    RUN pip install -r requirements.txt -i https://pypi.douban.com/simple 
    
    ENTRYPOINT ["python"]
    CMD ["hello.py"]
    
    • requirements
    PyMySQL
    opencv-python
    

    创建镜像

    sudo docker build -t mypython .
    

    二、运行程序

    (1)helloworld

    • helloworld.py
    print("hello world")
    

    运行程序

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython helloworld.py
    

    (2)日历输出

    • date.py
    import calendar
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
    print(calendar.month(yy,mm))
    

    运行程序

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython date.py
    

    (3)mysql数据库操作

    使用实验二中的数据库镜像,运行容器

    docker run --name xxmysql -d lxxmysql
    

    • mysql_db.py (是python操作数据库代码)
    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='xxmysql'          #容器名
    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 %s values(123456789,'aaa');" %table_name
    db.insert_data(sql1)
    
    print(db.select_all())
    
    db.conn_close()
    

    运行sql.py代码

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm --link=xxmysql mypython sql.py
    

    使用docker用户登录数据库 ,切换至docker_mysql数据库,两次查看表,看到插入的数据

    (4)opencv程序的部署运行

    • opencv.py (简单的生成灰度图形)
    import cv2
    img = cv2.imread("pic.jpg", 0)
    cv2.imwrite('result.jpg', img)
    print("success")
    

    运行程序

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython opencv.py
    

    • pic.jpg 原图
    • result.jpg 产生的灰度图像

    三、遇到的问题和解决方法

    这次实验内容比较简单,代码也很少,很顺利的完成了

    四、完成作业所花的时间

    学习该实践的内容:1小时
    查阅资料:1小时
    编写代码:1小时
    解决问题:0.5小时
    博客编写:1小时
    合计:4.5小时

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/lxx1999/p/12898754.html
Copyright © 2011-2022 走看看