python代码进去docker容器内_Docker容器实践之运行Python程序

Python镜像文件及PyCode

项目目录

Dockerfile

FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt

COPY ./hello.py /usr/src/app/

VOLUME /usr/src/app

ENTRYPOINT ["python"]

Requirements.txt

PyMySQL

opencv-python

Hello.py

print('hello world!')

Calander.py

import calendar

yy = int(input("输入年份: "))

mm = int(input("输入月份: "))

print(calendar.month(yy,mm))

Mysql.py

import pymysql

# 打开数据库连接

db = pymysql.connect("laughing_satoshi","ra9zer","123456","docker_mysql" )

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

# 使用 execute() 方法执行 SQL 查询

cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.

data = cursor.fetchone()

print ("Database version : %s " % data)

# 使用 execute() 方法执行 SQL,如果表存在则删除

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表

sql = """CREATE TABLE EMPLOYEE (

FIRST_NAME CHAR(20) NOT NULL,

LAST_NAME CHAR(20),

AGE INT,

SEX CHAR(1),

INCOME FLOAT )"""

cursor.execute(sql)

# SQL 插入语句

sql = """INSERT INTO EMPLOYEE(FIRST_NAME,

LAST_NAME, AGE, SEX, INCOME)

VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""

try:

# 执行sql语句

cursor.execute(sql)

# 提交到数据库执行

db.commit()

except:

# 如果发生错误则回滚

db.rollback()

# SQL 更新语句

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

try:

# 执行SQL语句

cursor.execute(sql)

# 提交到数据库执行

db.commit()

except:

# 发生错误时回滚

db.rollback()

# SQL 查询语句

sql = "SELECT * FROM EMPLOYEE \

WHERE INCOME > %s" % (1000)

try:

# 执行SQL语句

cursor.execute(sql)

# 获取所有记录列表

results = cursor.fetchall()

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

# 打印结果

print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \

(fname, lname, age, sex, income ))

except:

print ("Error: unable to fetch data")

# 关闭数据库连接

db.close()

Opencv.py

import cv2

#

src=cv2.imread('test.jpg')

# 垂直翻转

img=cv2.flip(src,0)

# 写入文件

cv2.imwrite("test-rotated.jpg", img)

print('Successed.')

部署运行

Hello world

sudo docker run --rm -v /home/ubuntu/docker-py/py:/usr/src/app dockerpy hello.py

日历

sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app dockerpy calander.py

注意:由于用到了input,需要输入内容,因此运行容器的时候需要用到-it参数,否则会报EOFError: EOF when reaeding a line的错误。

MySql

注意:运行mysql.py前要先运行数据库容器。然后通过 --link=容器名:容器别名 命令可以实现容器间的互访,否则由于容器间的隔离性,py容器会找不到数据库容器,即出现下图错误

sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app --link=laughing_satoshi:laughing_satoshi dockerpy mysql.py

OpenCv

sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app dockerpy opencv.py

实验心得

这次实验花费时间在3个小时左右,相对前俩次实验可以说是简单多了,属于比较入门的内容,感觉跟直接在linux下运行py代码差别不大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值