容器内运行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,不过都是些小问题。