2020系统综合实践 第5次实践作业

python镜像的安装及配置

创建下列文件

Dockerfile

FROM python:3.7
WORKDIR /app
COPY requirements*.txt ./

# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple 

ENTRYPOINT ["python"]
CMD ["hello.py"]

requirements.txt

PyMySQL
opencv-python

运行命令

sudo su 
docker build -t python:3 .

代码实现

helloworld

  • hello.py
print("hello world")
  • 运行
docker run -v /home/lyh/python/app:/app --rm python:3

日历

  • date.py
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
  • 运行
docker run -it -v /home/lyh/python/app:/app --rm python:3 date.py

数据库

  • 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='lyhmysql'          #容器名
username='lin'         #用户名
password='123456'      #密码
db_name='docker_mysql' #数据库名
table_name='people'    #表名
db=Mysql_db(ip, username, password, db_name,table_name)

db.db_conn()
sql='''
        create table %s (
            id varchar(10) primary key,
            name varchar(20)
        );
'''%table_name
db.create_table(sql)
sql1="insert into %s values(031702234,'lyh');" %table_name
db.insert_data(sql1)

print(db.select_all())

db.conn_close()
  • 运行

使用实验二构造好的镜像

#打开新终端
sudo su
docker run --name lyhmysql -p 3306:3306 -d lyhmysql
docker ps
docker exec -it lyhmysql /bin/bash


运行程序

docker run -it -v /home/lyh/python/app:/app --link=lyhmysql --rm python:3 sql.py


在容器里查看

opencv

  • cv.py
import cv2 as cv

img1 = cv.imread("photo1.jpg")
img2 = cv.imread("photo2.jpg")

result = cv.addWeighted(img1,0.3,img2,0.9,0)  
cv.imwrite('result.jpg', result)
print("success")
  • 运行
docker run -it -v /home/lyh/python/app:/app --rm python:3 cv.py

  • 结果

我实现两幅图的简单交融
photo1.jpg

photo2.jpg

result.jpg

总结

  • 所用时间
小时
查资料 2
实践操作 2.5
写博客 0.5
合计 5
  • 遇到一些坑的,

例如找不到py文件,最终发现是路径错误;
原本想直接使用实验二的容器,发现容器闪退,没办法只有使用镜像,重建一个;
运行opencv程序时报错,一直找不到原因,最终发现是符号用了中文符号。

posted @ 2020-05-19 14:51  lyhbk  阅读(196)  评论(0编辑  收藏  举报