(1)环境安装
根据Python官方镜像参考
- 最终项目结构
-
配置文件
-
Dockerfile
FROM python:3 MAINTAINER Dicky WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt ENTRYPOINT ["python"]
-
requirements.txt(基于本次实验要求)
PyMySQL opencv-python
-
-
制作镜像
docker build -t python-modulesinstalled .
(2)代码实现
-
helloworld
-
docker run -it --rm --name my-running-script -v /home/admin/dk_python/app:/usr/src/app my-python helloworld.py
-
-
calendar
-
docker run -it --rm --name my-running-script -v /home/admin/dk_python/app:/usr/src/app my-python cal.py
-
-
mysql数据库操作
采用的镜像是之前制作的
-
运行mysql容器
docker build -t pm_mysql . && docker run -it --name pm_mysql pm_mysql
-
查看mysql容器的ip地址(连接时要用到)
docker inspect pm_mysql
-
编写连接的python文件 (参考资料)
con-to-mysql.py
#!/usr/bin/python3 # -*- coding: UTF-8 -*- import pymysql # 打开数据库连接 db = pymysql.connect("172.18.0.2","docker","123456","S_C" ) # 第一个参数填上面的ip地址 # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO S(Sno, Sname, Sex) VALUES ('031700000', 'XiaoMing', 'M')""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()
-
执行命令
docker run -it --rm --name my-running-script -v /home/admin/dk_python/app:/usr/src/app my-python con-to-mysql.py
-
在容器中查看
-
-
OpenCV(图片的平移)
- opencv.py
import cv2 import numpy as np img = cv2.imread('test.jpg',0) rows,cols = img.shape M = np.float32([[1,0,100],[0,1,50]]) dst = cv2.warpAffine(img,M,(cols,rows)) cv2.imwrite("test-output.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
-
命令执行
docker run -it --rm --name my-running-script -v /home/admin/dk_python/app:/usr/src/app my-python opencv.py
-
测试结果
(3)总结
- 合计时间:
- 5小时左右
- 踩过的坑
- 连接数据库时,由于不在一个Docker network下,容器名不能映射到ip地址,所以得手动输入ip。