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
- 应用 app.py
- Dockerfile 应用打包成镜像
- Dcker-compose.yml 文件(定义整个服务需要的环境,web,reids)
- 启动 compose项目,(docker-compose up -d )
启动的流程:
- 创建网络
- 执行 docker-compose.yml
- 启动服务
体验操作流程
- 首先在 home 目录下创建一个文件夹
mkdir composetest
- 新建一个 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)
- 新建一个 requirements.txt 文件 flask redis
- 新建一个
Dockerfile
文件用来构建应用
shell FROM python:3.6-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD [“python”, “app.py”]
- 新建一个 docker-compose.yml 文件,这个文件用来启动应用
version: ‘3’ services: web: build: . ports: - “5000:5000” volumes: - .:/code redis: image: “redis:alpine”
- 启动 # 在 composetest文件夹下执行命令 # -d 为后台启动 docker-compose up -d
- 查看启动结果,如下说明启动成功,访问试试
实战
目标:使用springboot 创建一个小例子,能够访问 redis
步骤:
1. 编写微服务项目
- Dockerfile 编写
- docker-compose.yml 编排项目
- 放到服务器上执行 ,docker-compose up