一,python镜像定制
-
文件结构
-
Dockerfile
FROM python:3.7
MAINTAINER tt
# 设置工作目录
WORKDIR /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"]
# ENTRYPOINT默认参数
CMD ["hello.py"]
- requirements(为之后的数据库操作和OpenCV程序引入依赖)
PyMySQL
opencv-python
- 构建镜像
sudo docker build -t python_test .
二,运行py程序
1,测试
- hello.py
print('hello world')
- 运行py
sudo docker run -it --rm -v /home/ubuntu/mypy/app:/app python_test opencv.py
2,日历输出
- date.py
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))
- 运行py
sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile python_test date.py
3,mysql数据库操作
- mysql.py
import pymysql
# 打开数据库连接
db = pymysql.connect("mysql", "tong", "123456", "docker_mysql")
cursor = db.cursor()
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# SQL插入语句
sql = """insert test(id,name,sex)
values(002,'fwh','girl')"""
cursor.execute(sql)
db.commit()
# 插入完成后再读取一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)
# 关闭数据库连接
db.close()
- 运行程序
sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile --link=zzq_mysql python_test db.py
4,opencv程序的部署运行
- opencv.py
import cv2
import numpy as np
image = cv2.imread('test.png')
result = image[250:1700, 0:900]
cv2.imwrite('test_result.png', result)
-
运行程序
sudo docker run -it --rm -v /home/ubuntu/test5/pyfile:/pyfile python_test opencv.py
-
效果图展示:
三,遇到的问题和解决方法以及花费的时间
- 遇到的问题:
一开始把image和names混淆了,一直找不到对应的容器。解决方法:docker ps查看正确的名字。 - 花费的时间:
共1.5小时。