docker-compose 介绍

104 阅读2分钟

docker-compose

docker compose是一个命令行工具,是用于定义和运行多容器Docker应用程序的工具;通过Compose,开发者可以使用YML文件来配置应用程序需要的所有服务。

compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。使用 compose 可以简化容器镜像的构建以及容器的运行。
compose 使用 YAML 文件来定义多容器之间的关系。一个 docker-compose up 就可以把完整的应用跑起来。
本质上,compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定

官方例子体验

根据 官方文档,创建一个简单的示例,该程序用到了 python,redis,访问url 之后每次加1

地址: docs.docker.com/compose/get…

python 应用,计数器,redis

  1. 应用 app.py
  2. Dockerfile 应用打包成镜像
  3. Dcker-compose.yml 文件(定义整个服务需要的环境,web,reids)
  4. 启动 compose项目,(docker-compose up -d )

启动的流程:

  1. 创建网络
  2. 执行 docker-compose.yml
  3. 启动服务

体验操作流程

  1. 首先在 home 目录下创建一个文件夹 mkdir composetest

  2. 新建一个 app.py 文件, 注意和官网有些不一样

    import time
    import redis
    from flask import Flask
       
    app = Flask(__name__)
    cache = redis.Redis(host='redis', port=6379)
       
       
    def get_hit_count():
        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)
       
       
    @app.route('/')
    def hello():
        count = get_hit_count()
        return 'Hello World! I have been seen {} times.\n'.format(count)
       
    if __name__ ==  "__main__":
       app.run(host="0.0.0.0",debug=True)
    
  3. 新建一个 requirements.txt 文件 flask redis

    1. 新建一个 Dockerfile 文件用来构建应用

shell FROM python:3.6-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD [“python”, “app.py”]
  1. 新建一个 docker-compose.yml 文件,这个文件用来启动应用
version: ‘3services: web: build: . ports: - “5000:5000volumes: - .:/code redis: image: “redis:alpine”
  1. 启动 # 在 composetest文件夹下执行命令 # -d 为后台启动 docker-compose up -d

  2. 查看启动结果,如下说明启动成功,访问试试

实战

目标:使用springboot 创建一个小例子,能够访问 redis

步骤:

	1. 编写微服务项目
  1. Dockerfile 编写
  2. docker-compose.yml 编排项目
  3. 放到服务器上执行 ,docker-compose up