Docker-Compose初体验
欢迎关注【无量测试之道】公众号,回复【领取资源】,
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:项目的目录结构如下所示
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 构建镜像(注意一下命令执行的目录)
Step5:执行 docker-compose up -d 启动容器,后台运行(注意一下命令执行的目录)
启动后可以在dashboard 查看一下docker-compose 下有两个容器正在运行:
Step6:查看flask 页面
总结:整个过程演示完成,需要大家亲自动手实操才会找到感觉,大家赶快动起手来吧。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,一起共同成长吧。