当有互相依赖的多个容器,作为一个整体出现并提供服务时,用docker-compose来管理是一件非常愉快的事情,Docker Compose专门为编排Docker容器而产生。下面通过一个实例说明如何使用docker-compose,有一组应用里面有两个服务portal和redis,其中portal提供web访问界面,redis提供数据存储,portal依赖于redis。

建立项目目录:

mkdir demoproj
mkdir demoproj/{portal,redis,service}
cd demoproj

其中portal用来保存web相关文件,redis保存redis的数据文件(此样例暂时不保存数据在容器外部),service用来保存服务相关的程序(这个样例中没用)

建立web应用

web应用相关文件都放在portal目录中

编写基于flask的web应用,建立app.py文件,这个应用连接redis做访问计数

from flask import Flask
from redis import Redis
import os


app = Flask(__name__)
redis = Redis(host="redis", port=6379)


@app.route("/")
def hello():
    count = redis.incr("hits")
    return "Hello World! I have been seen %s times. \n" % (count,)


if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

编写requirements.txt描述这个python应用需要依赖的库

flask
redis

编写Dockerfile

FROM python:2.7
MAINTAINER jilili <jilili@aliyun.com>

ADD . /
WORKDIR /

RUN pip install -r requirements.txt
CMD ["python", "app.py"]

编写编排文件

在项目的根目录,既demoproj目录

编写docker-compose.yml文件

version: "3"
services:
  portal:
    build: portal/
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

使用docker-compose启动相关应用

docker-compose up -d

完成启动后就可以通过http://127.0.0.1:5000来访问了。

如果程序发生了改变可以通过如下命令重建

docker-compose up -d --build

[ 编辑 | 历史 ]
最近由“jilili”在“2017-10-03 07:15:24”修改