第五次实践作业
一、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
-
hello world
helloworld.py
print("hello world")
运行程序
sudo docker run --rm -v /home/xiaoc/docker_python/app:usr/src/app docker:py helloworld.py
-
日历输出
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
-
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参数才能正确输入和运行。