Dokcer14_3:Docker Compose使用

Dokcer14_3:Docker Compose使用

Docker Compose使用教程官方网址:https://docs.docker.com/compose/gettingstarted/

1.为项目创建一个存放目录

 mkdir composetest
 cd composetest

2.构建一个应用,app.py

新建app.py文件。app.py代表python的一个应用程序,直接粘贴下面代码即可,是一个访问计数的简易功能。

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)

在项目目录中创建另一个名为requments.txt的文件

flask
redis

3.构建Dockerfile(之前Dockerfile打包镜像,再run的就是单机玩一下)

FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requments.txt
CMD ["python", "app.py"]

命令解析:

  • 从Python3.7映像开始构建一个映像。
  • 将当前目录.添加到/code镜像中的路径。
  • 设置环境变量。
  • 安装GCC和其他依赖项
  • 复制requments.txt,并安装Python依赖项。
  • pip方式去运行,暴露端口5000。
  • 复制当前目录到镜像工作目录。
  • 将容器的默认命令设置为 flask run。

创建docker-compose.yml(定义整个服务,需要的环境。web、redis):完整的项目上线服务

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

这个docker-compose yaml文件定义了两个服务:web和redis。

通过命令docker-compose up来启动

流程:

  1. 创建网络
  2. 执行docker-compose yaml文件
  3. 启动服务
    docker-compose yaml
    Creating test_redis_1 … done(这里输出的是服务名字)
    Creating test_web_1 … done

Dokcer14_3:Docker Compose使用
默认的服务名称规则:文件目录_服务名_num
数字就是用来区分集群部署的,因为服务不可能只有一个实例,都是进群部署的,这样才能保证高可用性(HA),一台宕机不影响程序正常运行。

Dokcer14_3:Docker Compose使用
可以看到多了一个网络,test_default,这个就是docker-compose.yml中定义的服务,会自动分配到同一网络来保证网络的连通。
这样,同一网络下,可以直接通过域名来访问,比如redis:6379,不需要你关心重新拉取之后ip变掉,因为你使用域名访问的。

停止compose

docker-compose down或者ctrl + c。

compose作用

以前都是单个docker run启动容器
docker-compose通过编写docker-compose.yml配置文件,可以通过docker-compose up来一键启动、停止所有服务。

上一篇:Docker Compose


下一篇:Docker compose学习