系统综合实践第五次作业

容器内运行python程序

一、基础文档编写

0.项目结构

1.文件夹内编写Dockfile

Dockerfile

FROM python:3.7
WORKDIR /usr/src/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"]    
CMD ["hello.py"]   

2.声明所需依赖

requirement.txt

PyMySQL
opencv-python

3.构建镜像

sudo docker build -t python

二、程序的部署运行

hello world程序

hello.py

#hello.py
print('hello world !')

运行hello.py(默认运行hello.py,所以可以不用指明文件名)

sudo docker run -it -v /home/zhanghui/python/app:/usr/src/app --rm python

日历输出

date.py

import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: ")) 
# 显示日历
print(calendar.month(yy,mm))

运行date.py

sudo docker run -it -v /home/zhanghui/python/app:/usr/src/app --rm python date.py

数据库操作

运行之前的数据库容器,并创建新表

sudo docker run --name zh_mysql -p 3306:3306 -d mysql_image
sudo docker exec -it zh_mysql /bin/bash  
mysql -u root -p
create database student;
use student
create table ID (num int , name varchar(20),primary key(num));  #创建数据表
insert into ID(num,name) value(913 , 'linli'); #插入数据
select * from ID;

db.py

import pymysql

db = pymysql.connect("10.0.2.15", "root", "123456", "student")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute()  方法执行 SQL 查询 
try:
    cursor.execute("select * from ID;")   #执行
    results = cursor.fetchall()
 
    for row in results:
          num = row[0]
          name = row[1]
           # 打印结果
          print ("num=%d , name=%s" % \
                 (num,name ))

except:
    print("Error: unable to fetch data")
# 关闭数据库连接
db.close()

运行db.py

sudo docker run -it -v /home/zhanghui/python/app:/usr/src/app --rm --link=mysql_image python db.py

opencv程序

cv.py

import cv2
img = cv2.imread("1.png", 0)
cv2.waitKey()
cv2.imwrite("2.png", img)  

运行cv.py

sudo docker run -it -v /home/zhanghui/python/app:/usr/src/app --rm python cv.py


用时和心得

这次实验相对简单一些,差不多花了5个小时左右,中间也有遇到一些bug,不过都是些小问题。

posted @ 2020-05-22 17:59  54zhazhahui  阅读(164)  评论(0编辑  收藏  举报