一、编排工具

在实际的部署工作中,需要使用到多种服务,比如mysql、nginx等,那这么多镜像如何进行组合编排呢,这就是Docker-Compose需要解决的问题。Docker容器编排工具有:

二、Docker-Compose安装

Docker-Compose在windows和mac上,随着Docker安装就已经安装了。针对Linux,需要额外安装。官方安装教程为:https://docs.docker.com/compose/install/linux/#install-using-the-repository

1. 安装docker-compose-plugin

$ sudo apt-get update
# 安装最新版的docker-compose
$ sudo apt-get install docker-compose-plugin
# 安装指定版本的docker-compose(课程中的版本)
$ sudo apt install docker-compose-plugin=2.27.0-1~ubuntu.22.04~jammy

2. 查看compose版本:

$ docker compose version

三、Docker-Compose使用

使用Docker-Compose编排容器时,可以将编排指令放到compose.yaml文件中。这里以构建一个构建Flask+Redis的服务的过程为例来讲解Docker-Compose的使用。

1. 创建项目:

创建一个文件夹,叫做flask-web,并在里面创建一个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('/hit')
def hit():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

@app.route("/")
def index():
    return "<h1>Welcom to Flask App</h1>"

2. 创建requirements.txt

在flask-web文件夹中,创建requirements.txt文件。这个文件是用于记录当前项目依赖的第三方包文件,内容如下:

flask==3.0.3
redis==5.0.4