Docker-Compose初体验

小爷有点狂 2020-06-12

欢迎关注【无量测试之道】公众号,回复【领取资源】,
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初体验

Dockerfile:
FROM python:3.7-alpine
WORKDIR /code
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD python app.py
 
tip:之前文章有详细注释,这里不再赘述。
docker-compose.yml 内容为:
  version: ‘2’
  services:
  flask:
    build: . #表示flask服务用dockerfile 来构建
    ports:
      - "5000:5000" #开放的端口
  redis:
    image: “redis:alpine” #表示redis 服务直接使用现成的镜像
  mysqldb:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE: mysql
    ports:
      - "3306:3306"
      
requirements.txt 内容为:
  flask
  redis
  pymysql
  tip :表示要安装python第三方包
 
app.py 内容为:
import random
import redis
import time
import pymysql
from flask import Flask
 
app = Flask(name)
cache = redis.Redis(host=’redis’, port=6379) #host直接是yml文件里定义的
 
def get_conn(): #调用了mysql容器
  conn = pymysql.connect(“mysqldb”,”root”,”123456”,”mysql”)#host直接是yml文件里定义的
  cursor = conn.cursor()
  sql=”select count(*) from user”
  resultList = []
  cursor.execute(sql)
  result = cursor.fetchall()
  columns = cursor.description
  for val in result:
      tempDict = {}
      for cloNum in range(len(columns)):
          tempDict[str(columns[cloNum][0])] = val[cloNum]
      resultList.append(tempDict)
  print(“——————————-打印查询结果———————————“)
  print(resultList)
  return resultList[0]
 
def get_hit_count(): #调用了redis容器
  retries = 5
  while True:
    try:
        return cache.incr(‘hits’)
    except redis.exceptions.ConnectionError as exc:
        if retries == 0:
            raise exc
        retries -= 1
        time.sleep(0.5)
 
def get_random():#自定义的方法
  return random.randrange(1,1000)*1000000
 
@app.route(‘/‘)
def main():
  count = get_random()
  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())
 
if name == “main“:
  app.run(host=”0.0.0.0”, debug=True)

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

 Docker-Compose初体验

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

 Docker-Compose初体验

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

 Docker-Compose初体验

Step6:查看flask 页面

 Docker-Compose初体验

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

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

 Docker-Compose初体验

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

相关推荐