欢迎关注【无量测试之道】公众号,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、


文章下方有公众号二维码,可直接微信扫一扫关注即可。

 

Step1:什么是 Docker-Compose?

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。


Step2:Compose 使用的三个步骤
1、使用 Dockerfile 定义应用程序的环境。
2、使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
3、执行 docker-compose build/up 命令来启动并运行整个应用程序。


Step3:项目的目录结构如下所示
Docker-Compose初体验_python

 

 

 

 1 Dockerfile:
 2 FROM python:3.7-alpine
 3 WORKDIR /code
 4 COPY requirements.txt requirements.txt
 5 RUN pip install -r requirements.txt
 6 COPY . .
 7 CMD python app.py
 8  
 9 tip:之前文章有详细注释,这里不再赘述。
10 docker-compose.yml 内容为:
11   version: ‘2’
12   services:
13   flask:
14     build: . #表示flask服务用dockerfile 来构建
15     ports:
16       - "5000:5000" #开放的端口
17   redis:
18     image: “redis:alpine” #表示redis 服务直接使用现成的镜像
19   mysqldb:
20     image: mysql:5.7
21     environment:
22       - MYSQL_ROOT_PASSWORD=123456
23       - MYSQL_DATABASE: mysql
24     ports:
25       - "3306:3306"
26       
27 requirements.txt 内容为:
28   flask
29   redis
30   pymysql
31   tip :表示要安装python第三方包
32  
33 app.py 内容为:
34 import random
35 import redis
36 import time
37 import pymysql
38 from flask import Flask
39  
40 app = Flask(name)
41 cache = redis.Redis(host=’redis’, port=6379) #host直接是yml文件里定义的
42  
43 def get_conn(): #调用了mysql容器
44   conn = pymysql.connect(“mysqldb”,”root”,”123456”,”mysql”)#host直接是yml文件里定义的
45   cursor = conn.cursor()
46   sql=”select count(*) from user”
47   resultList = []
48   cursor.execute(sql)
49   result = cursor.fetchall()
50   columns = cursor.description
51   for val in result:
52       tempDict = {}
53       for cloNum in range(len(columns)):
54           tempDict[str(columns[cloNum][0])] = val[cloNum]
55       resultList.append(tempDict)
56   print(“——————————-打印查询结果———————————“)
57   print(resultList)
58   return resultList[0]
59  
60 def get_hit_count(): #调用了redis容器
61   retries = 5
62   while True:
63     try:
64         return cache.incr(‘hits’)
65     except redis.exceptions.ConnectionError as exc:
66         if retries == 0:
67             raise exc
68         retries -= 1
69         time.sleep(0.5)
70  
71 def get_random():#自定义的方法
72   return random.randrange(1,1000)*1000000
73  
74 @app.route(‘/‘)
75 def main():
76   count = get_random()
77   return ‘Hello Flask! the random number is: {} \n’.format(count)+” the redis incr num:{}”.format(get_hit_count())+” the count of user:”+str(get_conn())
78  
79 if name == “main“:
80   app.run(host=”0.0.0.0”, debug=True)

Step4:执行docker-compose build 构建镜像(注意一下命令执行的目录)

 Docker-Compose初体验_flask_02

 

 

 

Step5:执行 docker-compose up -d 启动容器,后台运行(注意一下命令执行的目录)

 Docker-Compose初体验_mysql_03

 

 

启动后可以在dashboard 查看一下docker-compose 下有两个容器正在运行:

 Docker-Compose初体验_python_04

 

 

Step6:查看flask 页面

 Docker-Compose初体验_redis_05

 

 

总结:整个过程演示完成,需要大家亲自动手实操才会找到感觉,大家赶快动起手来吧。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

 Docker-Compose初体验_python_06

 添加关注,一起共同成长吧。