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

1、Python自定义镜像搭建

  • 项目结构

  • Dockerfile

FROM python:3.7
MAINTAINER LZS
# 设置工作目录
WORKDIR /app
# 添加依赖声明文件
COPY requirements.txt ./
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
VOLUME /usr/src/app
# 实现命令行式调用容器
ENTRYPOINT ["python"]
# ENTRYPOINT默认参数
CMD ["hello.py"]
  • requirements.txt
#requirements.txt
PyMySQL
opencv-python
  • 搭建镜像
sudo docker build -t docker-python .

2、运行Python程序

  • 1.helloworld

hello.py

print('hello world')

运行

sudo docker run --rm -v /home/ubuntu/homework5/app:/app docker-python hello.py

  • 2.日历输出

date.py

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

运行

sudo docker run -it --rm -v /home/ubuntu/homework5/app:/app docker-python date.py

  • 3.mysql数据库操作

用于创建一个新的网络连接

sudo docker network create --subnet=172.1.0.0/16 py_mysql

运行mysql容器

sudo docker run --network py_mysql --name mysql_lzs -d mysql:lzs
sudo docker exec -it mysql_lzs /bin/bash

mysql.py

import pymysql
# 打开数据库连接
db = pymysql.connect(host="mysql_lzs",user="lzs",password="123456",database="docker_mysql" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print("Database version : %s " % data)

# 使用预处理语句创建表
sql = """CREATE TABLE user (
	 id  CHAR(10) NOT NULL,
	 name  CHAR(20) )"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 如果发生错误则回滚
   db.rollback()

# SQL 插入语句
sql = """INSERT INTO user(id,name)
	 VALUES ('01', 'roll')"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 如果发生错误则回滚
   db.rollback()

# SQL 查询语句
sql = """SELECT * FROM user"""

try:
   # 执行SQL语句
   cursor.execute(sql)
   # 获取所有记录列表
   results = cursor.fetchall()
   for row in results:
      idd = row[0]
      name = row[1]
       # 打印结果
      print ("id:%s,name:%s" % 
	     (idd, name ))
except:
   print ("Error: unable to fetch data")
# 关闭数据库连接
db.close()

运行python

sudo docker run --rm -v  /home/ubuntu/homework5/app:/app --network py_mysql docker-python mysql.py

  • 4.opencv程序的部署运行

opencv.py

import cv2

# 图片源
src=cv2.imread('test.jpg')

# 垂直翻转
img=cv2.flip(src,0)


# 写入文件
cv2.imwrite("test-rotated.jpg", img)
print('Successed.')

运行

sudo docker run --rm -v /home/ubuntu/homework5/app:/app docker-python opencv.py

小结

  • 问题和解决办法

问题:数据库连接时出错

原因:数据库镜像构建时,没有加入docker这一用户
解决:将mysql.py中连接数据库那一行代码的user参数改为已创建的用户名

  • 用时

2小时

原文地址:https://www.cnblogs.com/tinygod/p/12934294.html