python镜像的安装及配置
创建下列文件
Dockerfile
FROM python:3.7
WORKDIR /app
COPY requirements*.txt ./
# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
ENTRYPOINT ["python"]
CMD ["hello.py"]
requirements.txt
PyMySQL
opencv-python
运行命令
sudo su
docker build -t python:3 .
代码实现
helloworld
- hello.py
print("hello world")
- 运行
docker run -v /home/lyh/python/app:/app --rm python:3
日历
- date.py
import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))
- 运行
docker run -it -v /home/lyh/python/app:/app --rm python:3 date.py
数据库
- mysql_db.py(python操作数据库的方法)
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='lyhmysql' #容器名
username='lin' #用户名
password='123456' #密码
db_name='docker_mysql' #数据库名
table_name='people' #表名
db=Mysql_db(ip, username, password, db_name,table_name)
db.db_conn()
sql='''
create table %s (
id varchar(10) primary key,
name varchar(20)
);
'''%table_name
db.create_table(sql)
sql1="insert into %s values(031702234,'lyh');" %table_name
db.insert_data(sql1)
print(db.select_all())
db.conn_close()
- 运行
使用实验二构造好的镜像
#打开新终端
sudo su
docker run --name lyhmysql -p 3306:3306 -d lyhmysql
docker ps
docker exec -it lyhmysql /bin/bash
运行程序
docker run -it -v /home/lyh/python/app:/app --link=lyhmysql --rm python:3 sql.py
在容器里查看
opencv
- cv.py
import cv2 as cv
img1 = cv.imread("photo1.jpg")
img2 = cv.imread("photo2.jpg")
result = cv.addWeighted(img1,0.3,img2,0.9,0)
cv.imwrite('result.jpg', result)
print("success")
- 运行
docker run -it -v /home/lyh/python/app:/app --rm python:3 cv.py
- 结果
我实现两幅图的简单交融
photo1.jpg
photo2.jpg
result.jpg
总结
- 所用时间
小时 | |
---|---|
查资料 | 2 |
实践操作 | 2.5 |
写博客 | 0.5 |
合计 | 5 |
- 遇到一些坑的,
例如找不到py文件,最终发现是路径错误;
原本想直接使用实验二的容器,发现容器闪退,没办法只有使用镜像,重建一个;
运行opencv程序时报错,一直找不到原因,最终发现是符号用了中文符号。