zoukankan      html  css  js  c++  java
  • 第五次系统综合实践

    构建python镜像

    构建文件夹

    Dockerfile编写

    FROM python
    MAINTAINER wjj
    WORKDIR /code
    COPY requirements.txt ./
    RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt   # 修改为清华源并安装依赖
    ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
    CMD [ "helloworld.py" ]  # ENTRYPOINT默认参数
    

    requirements.txt编写

    该文件用来写python运行时所需要的依赖

    PyMySQL
    opencv-python
    cryptography
    

    创建镜像

    输入docker build -t my-python .

    运行程序

    hello world

    helloworld.py文件代码如下

    print("hello world 031702537")
    

    输入docker run -it -v /home/tuffy/python/code:/code --rm my-python helloworld.py运行并查看结果

    data

    data.py文件代码如下

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

    输入docker run -it -v /home/tuffy/python/code:/code --rm my-python data.py运行并查看结果

    mysql

    首先,需要先创建一个网络,让mysql容器和python容器在上面同时运行,以便连接
    docker network create --subnet=172.1.0.0/16 py_mysql_net

    接着用一个终端运行mysql容器并创建一个名为“wjj”的数据库用来和python连接

    利用sql语句创建Stu表

    py_mysql.py文件第一次执行代码如下

    import pymysql
    
    db = pymysql.connect("mysql1","root","123456","wjj" )	# 第一个参数填上面的ip地址
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 插入语句
    sql = """INSERT INTO Stu(Sno,
             Sname, Sex)
             VALUES ('031702537', 'james_j', 'm')"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    
    sql = """INSERT INTO Stu(Sno,
             Sname, Sex)
             VALUES ('123456', 'ikou', 'm')"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    
    
    # 关闭数据库连接
    db.close()
    

    运行python容器

    可以看到此时的数据库中增加了两条记录

    py_mysql.py文件第二次执行代码如下

    import pymysql
    
    db = pymysql.connect("mysql1","root","123456","wjj" )	# 第一个参数填上面的ip地址
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 删除语句
    sql = """delete from Stu where Sno = '031702537';"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
    # 关闭数据库连接
    db.close()
    

    运行python容器

    运行可以看到Sno是031702537的记录被删除了

    openCV

    编辑一下代码

    import numpy as np
    import cv2 as cv
    
    img = cv.imread('123.jpg',1)
    
    imageText = img.copy()
    
    cv.putText(imageText, 'wjj_photo', (500, 500), cv.FONT_HERSHEY_COMPLEX, 4, (255, 0 ,0), thickness = 4)      # 将wjj_photo以蓝色字形式写在图片上
    
    cv.imwrite('./123_new.jpg', imageText)
    
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    运行docker run -it -v /home/tuffy/python/code:/code --rm my-python openCV.py
    可以看到原code文件夹中多了一个"123_new.jpg"文件



    可以看到"123_new.jpg"左上角出现了蓝色字"wjj_photo"

    总结

    程序:4个小时
    博客:1.5小时

    遇到的问题

    一开始我的数据库和代码连接不上,后来参考了大佬的博客才发现可以用创建同一个网络给两个容器运行来完成
    另外一开始我的openCV代码出现以下报错

    后来发现cv.imshow()这个函数在windows下可以直接调出窗口显示图片,在命令行下使用Linux就没法显示了,所以直接放弃使用该函数改用cv.imwrite

  • 相关阅读:
    四则运算
    四则运算二
    学习进度条
    四则运算一
    课堂测试七
    问题与思考6
    问题与思考5
    问题与思考04
    Android SDK 目录说明
    如何判断视频的比例(4:3/16:9)和分辨率?
  • 原文地址:https://www.cnblogs.com/J-J-1008/p/12923899.html
Copyright © 2011-2022 走看看