Docker Compose

官方文档

网址:https://docs.docker.com/compose/

多看官网,能快速的学习!!!

简介

Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。它是一个定义和运行多容器的 docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件 创建和运行所有的服务。重点可以启动多个容器!

docker-compose组成?

Docker-Compose将所管理的容器分为三层:

  • 工程(project)
  • 服务(service)
  • 容器(container)

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。

一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例。

  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名 字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等,即以容器为粒度,用户需要Compose 所完成的任务。
  • 项目(project):由一组关联的应用容器组成的一个完成业务单元,在docker-compose.yml中定义。即是 Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所 有容器管理与部署操作。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配 置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器 相互配合来完成某项任务的情况。

例如:要部署一个Web项目,除了Web服务容器,往往还需要再加上后端的数据 库服务容器,甚至还包括负载均衡容器等。

docker-compose.yml配置文件像这样的

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

安装

一、环境

# 查看内核/操作系统/CPU信息 
uname -a 

二、下载服务文件

# 建议用迅雷下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 下载的文件会输出到 /usr/local/bin/docker-compose

三、授予权限

sudo chmod +x /usr/local/bin/docker-compose

四、检查是否安装成功

cd /
docker-compose version

体验

官方参考地址:https://docs.docker.com/compose/gettingstarted/

一、创建目录

 $ mkdir /home/composetest && cd /home/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

四、编写DockerFile文件

在此步骤中,您将编写一个构建Docker映像的Dockerfile。该图像包含Python应用程序所需的所有依赖关系,包括Python本身。

在您的项目目录中,创建一个名为Dockerfile的文件并粘贴以下内容:

FROM python:3.7-alpine
ADD . /code
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

五、定义Service到Compose File文件里

在项目目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:

version: "3.8"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
# 先启动redis 在启动 web
    depends_on:
      - redis
  redis:
    image: "redis:alpine"

该Compose文件定义了两个服务:Web和Redis,实现完整的上线!

六、使用Compose构建和运行您的应用

$ docker-compose up

$ docker-compose up -d

后端启动

1. 运行效果

2. 查看启动的容器信息

3. CURL访问

Dockerdocker compose
暂无评论

发送评论 编辑评论


				
上一篇
下一篇