Docker容器实践之运行Python程序

摘要:
注意mysql:在运行mysql.py之前运行数据库容器。

目录

Python镜像文件及PyCode

项目目录

Docker容器实践之运行Python程序第1张

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
    Docker容器实践之运行Python程序第2张

日历

  • sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app dockerpy calander.py
    Docker容器实践之运行Python程序第3张
  • 注意:由于用到了input,需要输入内容,因此运行容器的时候需要用到-it参数,否则会报EOFError: EOF when reaeding a line的错误。

MySql

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

  • sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app --link=laughing_satoshi:laughing_satoshi dockerpy mysql.py
    Docker容器实践之运行Python程序第5张
    Docker容器实践之运行Python程序第6张

OpenCv

  • sudo docker run -it --rm -v /home/ubuntu/docker-py/py:/usr/src/app dockerpy opencv.py
    Docker容器实践之运行Python程序第7张
    Docker容器实践之运行Python程序第8张

实验心得

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

免责声明:文章转载自《Docker容器实践之运行Python程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[GIt] 团队工作效率分析工具gitstatsidea配置git,github , gitee下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Sql Server的艺术(七) SQL 数据插入操作

--用INSERT插入单行数据    在SQL中,可以通过INSERT...VALUES语句直接向数据库表中插入数据。可以整行,也可以部分列。 基本语法: INSERT INTO table_name [column1,column2...] VALUES (values1,values2...

Linux下安装numpy

转自:https://blog.csdn.net/abc_321a/article/details/82056019 1.下载源码包 ,命令如下wget http://jaist.dl.sourceforge.net/project/numpy/NumPy/1.9.0/numpy-1.9.0.zip若提示没有wget,则需要通过“yum install -...

python数组操作

python中的数组其实就是list,但它更像是java的arraylist,而且功能比arraylist更强大。因为python的list其实是个对象,所以对于他的操作和删除比较有讲究。 创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个...

Python基础(二)--基本数据类型、格式化输出、基本运算符

一、基本数据类型 1、数字类型 #int整型 定义:age=10 #age=int(10) 用于标识:年龄,等级,身份证号,qq号,个数 #float浮点型 定义:salary=3.1 #salary=float(3.1) 用于标识:工资,身高,体重 #int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-21...

Windows上安装-kivy

原文:https://kivy.org/doc/stable/installation/installation-windows.html#install-win-dist 如果您使用Anaconda,则可以使用以下命令安装kivy: $ conda install kivy -c conda-forge 否则,请继续下面的步骤以在本机Python安装...

适用初学者的5种Python数据输入技术

摘要:数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要。在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考。 数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要。在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考。 作为初学者,您可能只知道一种使用p andas.read_csv函...