初识docker-compose

Uiaoin 2020-05-10 4496

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。docker-compose通过一个YAML文件配置应用所需要的服务,并且通过简单的命令来构建和启动所有服务,使用compose基于三个步骤:

  • 1、使用Dockerfile构建允许环境;
  • 2、使用docker-compose.yml定义应用需要的服务,在各个独立的环境之间构建并运行;
  • 3、启动整个应用。

一、首先安装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常用的操作,并尝试搭建一个自定义服务。

加载更多