构建python镜像
构建文件夹
Dockerfile编写
FROM python
MAINTAINER wjj
WORKDIR /code
COPY requirements.txt ./
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt # 修改为清华源并安装依赖
ENTRYPOINT [ "python" ] # 实现命令行式调用容器
CMD [ "helloworld.py" ] # ENTRYPOINT默认参数
requirements.txt编写
该文件用来写python运行时所需要的依赖
PyMySQL
opencv-python
cryptography
创建镜像
输入docker build -t my-python .
运行程序
hello world
helloworld.py文件代码如下
print("hello world 031702537")
输入docker run -it -v /home/tuffy/python/code:/code --rm my-python helloworld.py
运行并查看结果
data
data.py文件代码如下
import calendar
yy = int(input("请输入年份:"))
mm = int(input("请输入月份:"))
print(calendar.month(yy,mm))
输入docker run -it -v /home/tuffy/python/code:/code --rm my-python data.py
运行并查看结果
mysql
首先,需要先创建一个网络,让mysql容器和python容器在上面同时运行,以便连接
docker network create --subnet=172.1.0.0/16 py_mysql_net
接着用一个终端运行mysql容器并创建一个名为“wjj”的数据库用来和python连接
利用sql语句创建Stu表
py_mysql.py文件第一次执行代码如下
import pymysql
db = pymysql.connect("mysql1","root","123456","wjj" ) # 第一个参数填上面的ip地址
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO Stu(Sno,
Sname, Sex)
VALUES ('031702537', 'james_j', 'm')"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
sql = """INSERT INTO Stu(Sno,
Sname, Sex)
VALUES ('123456', 'ikou', 'm')"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
运行python容器
可以看到此时的数据库中增加了两条记录
py_mysql.py文件第二次执行代码如下
import pymysql
db = pymysql.connect("mysql1","root","123456","wjj" ) # 第一个参数填上面的ip地址
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 删除语句
sql = """delete from Stu where Sno = '031702537';"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
运行python容器
运行可以看到Sno是031702537的记录被删除了
openCV
编辑一下代码
import numpy as np
import cv2 as cv
img = cv.imread('123.jpg',1)
imageText = img.copy()
cv.putText(imageText, 'wjj_photo', (500, 500), cv.FONT_HERSHEY_COMPLEX, 4, (255, 0 ,0), thickness = 4) # 将wjj_photo以蓝色字形式写在图片上
cv.imwrite('./123_new.jpg', imageText)
cv.waitKey(0)
cv.destroyAllWindows()
运行docker run -it -v /home/tuffy/python/code:/code --rm my-python openCV.py
可以看到原code文件夹中多了一个"123_new.jpg"文件
可以看到"123_new.jpg"左上角出现了蓝色字"wjj_photo"
总结
程序:4个小时
博客:1.5小时
遇到的问题
一开始我的数据库和代码连接不上,后来参考了大佬的博客才发现可以用创建同一个网络给两个容器运行来完成
另外一开始我的openCV代码出现以下报错
后来发现cv.imshow()
这个函数在windows下可以直接调出窗口显示图片,在命令行下使用Linux就没法显示了,所以直接放弃使用该函数改用cv.imwrite