Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。docker-compose通过一个YAML文件配置应用所需要的服务,并且通过简单的命令来构建和启动所有服务,使用compose基于三个步骤:
一、首先安装docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose 验证安装 $ docker-compose --version // docker-compose version 1.25.5, build 8a1c60f6
二、搭建一个简单的应用,基于Python的计数器,用到Redis,当然不需要安装Python和Redis,这些用docker就OK了,参照:https://docs.docker.com/compose/gettingstarted/
1、定义应用环境依赖
创建应用路径
$ mkdir composetest $ cd 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)
创建requirements.txt并写入
flask redis
2、在项目路径创建Dockerfile用来构建docker镜像,Dockerfile内容如下:
FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP app.py ENV FLASK_RUN_HOST 0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["flask", "run"]
3、创建docker-compose.yml定义web和redis两个服务,web服务从当前路径的Dockerfile构建,绑定5000端口,内容如下:
version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
4、构建并且运行应用
$ docker-compose up 如果后面加参数 -d 则是后台运行 停止 $ docker-compose down
然后我们访问http://localhost:5000,输出正确,说明服务已经搭好了,由于是在服务器上,直接用curl好了
到这里,使用docker-compose构建一个简单的web应用已经完成了,详情请参照官方文档。
下一篇文章,介绍一些docker-compose常用的操作,并尝试搭建一个自定义服务。