docker compose

1 compose是什么

前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

2 安装compose

1 下载

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2 授权 docker-compose version 显示版本即安装成功!

sudo chmod +x /usr/local/bin/docker-compose
[root@iZuf65o9ovhniso4w0oji5Z bin]# docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

3 体验

参考官网
第一步:准备

  • 创建文件夹
	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

第二步:创建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
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

第三步:在docker compose文件中部署服务

  • 编写docker-compose.yml文件
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

第四步:用build run运行应用

docker-compose up
Creating network "composetest_default" with the default driver
Building web
Sending build context to Docker daemon  5.632kB
Step 1/10 : FROM python:3.7-alpine
3.7-alpine: Pulling from library/python
540db60ca938: Pull complete 
a7ad1a75a999: Pull complete 
37ce6546d5dd: Pull complete 
ec9e91bed5a2: Pull complete 
ecb9463b81f8: Pull complete 
Digest: sha256:65ef4c7141a5f6a5fb18aa8dfcbd19663028e161d74210fb6155f20a1342a0db
Status: Downloaded newer image for python:3.7-alpine
 ---> 078bbc5dc0e6
Step 2/10 : WORKDIR /code
 ---> Running in 45e02a299a96
Removing intermediate container 45e02a299a96
 ---> 52de9282f042
Step 3/10 : ENV FLASK_APP=app.py
 ---> Running in 6f644a990087
Removing intermediate container 6f644a990087
 ---> faff000f33b2
Step 4/10 : ENV FLASK_RUN_HOST=0.0.0.0
 ---> Running in d8a125a4ffcb
Removing intermediate container d8a125a4ffcb
 ---> be0cd543b6a9
Step 5/10 : RUN apk add --no-cache gcc musl-dev linux-headers
······

流程:

  1. 创建网络
    在这里插入图片描述
    在这里插入图片描述
    在同一个网络下直接通过域名访问。
  2. 执行
  3. Creating composetest_web_1 … done
    Creating composetest_redis_1 … done
    命名规则:文件名_服务名_num

第五步:停止 docker-compose stop
总结:
以前都是单个docker run启动容器。
docker-compose 通过编写yaml配置文件、可以通过compose一键启动所有服务,停止!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值