第五次实践作业

第五次实践作业

一、Python镜像环境搭建

项目结构如图:

  • Dockerfile

    FROM python:3
    MAINTAINER qaq
    WORKDIR /usr/src/app
    COPY requirements.txt ./
    RUN pip install  --default-timeout=100 --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
    VOLUME /usr/src/app
    ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
    CMD ["python"]
    
  • requirements.txt

    PyMySQL
    opencv-python
    
  • 创建镜像

    docker build -t docker:py .
    

二、运行python

  1. hello world

    helloworld.py

    print("hello world")
    

    运行程序

    sudo docker run --rm -v /home/xiaoc/docker_python/app:usr/src/app docker:py helloworld.py
    

  1. 日历输出

    date.py

    import calendar
    year = int(input("输入年份: "))
    month = int(input("输入月份: "))
    print(calendar.month(year,month))
    

    运行程序

    sudo docker run --it -rm -v /home/xiaoc/docker_python/app:usr/src/app docker:py helloworld.py
    

  1. mysql数据库操作

    mysql数据库使用第二次实验中的数据库

    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='cjymysql'          #容器名
    username='docker'         #用户名
    password='123456'      #密码
    db_name='docker_mysql' #数据库名
    table_name='user'    #表名
    db=Mysql_db(ip, username, password, db_name,table_name)
    
    db.db_conn()
    
    sql1="insert into %s values('031702660','zhangsan','female','cs','xiaob');" %table_name
    db.insert_data(sql1)
    
    print(db.select_all())
    
    db.conn_close()
    

    运行程序

    sudo docker run -it -v /home/xiaoc/docker_python/app:/usr/src/app --rm --link=cjymysql docker:py sql.py
    

登陆数据库查看插入结果

4.opencv程序的部署运行

cv.py

#查看图片像素的BGR值
import cv2
img=cv2.imread('test.jpg')
px=img[100,100]
print(px)
blue=img[100,100,0]
print(blue)

运行程序

sudo docker run --rm -v /home/xiaoc/docker_python/app:usr/src/app docker:py cv.py

三.所花时间及遇到问题

时间:总共花了6个小时左右

问题:date.py运行时需加入-it参数才能正确输入和运行。

posted @ 2020-05-22 19:41  REPLUSONE  阅读(125)  评论(0编辑  收藏  举报