docker-compose服务编排 && 使用docker-compose部署Redis集群

本文详细介绍了如何使用docker-compose进行服务编排,重点在于部署Redis集群。从docker-compose的安装开始,逐步讲解了编写Dockerfile、compose文件,以及运行和管理命令。在配置网络部分,强调了容器间通过名称可以直接通信。最后,提供了具体部署redis-cluster的步骤,包括配置文件和compose文件的编写,以及如何查看和进入容器。
摘要由CSDN通过智能技术生成

前言:
如果我们的项目是分布式的微服务而且我们还用了docker容器,那么我们每启动一个实例都需要自己去docker bulid run
这样的操作,如果一个服务器要在100台服务器上部署,麻烦就来了。
docker-compose 就帮我解决了这一个问题。
通过编写 Dockerfile文件跟compose文件就可以实现一键部署

参考官方文档:
https://docs.docker.com/compose/install/

注意:使用docker-compose 需要基础的docker 服务 所以一定要先安装docker服务

docker-compose 安装

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

[root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0    331      0  0:00:01  0:00:01 --:--:--   331
100 11.6M  100 11.6M    0     0   264k      0  0:00:45  0:00:45 --:--:--  534k
#查看安装的版本
[root@localhost home]# docker-compose -version
docker-compose version 1.26.2, build eefe0d31

编排我们的一个服务

这个服务就是官方提供的。
改服务器中使用到了python 跟redis  但是我们不用下载安装到本地机器。docker容器中会安装。 

第一步、准备我们的程序

#创建一个目录
[root@localhost home]# mkdir 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)
#再创建一个文件
[root@localhost ~]# mkdir 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"]

第三步 编写我们的compose文件

docker-compose.yml

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

第四步,编译运行我们的Compose

#这里发现报了一个错,是因为我们没有启动我们的docker服务,启动我们docker服务就可以了
[root@localhost composetest]# docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
#启动我们的docker 服务
[root@localhost composetest]# service docker start
[root@localhost composetest]# docker-compose up
Building web
Step 1/10 : FROM python:3.7-alpine
 ---> ae3ec9b0407e
Step 2/10 : WORKDIR /code
 ---> Using cache
 ---> 70ecbbb37bf5
Step 3/10 : ENV FLASK_APP app.py
 ---> Using cache
 ---> 9ef08ea0e2b7
Step 4/10 : ENV FLASK_RUN_HOST 0.0.0.0
 ---> Using cache
 ---> 967e0c411602
Step 5/10 : RUN apk add --no-cache gcc musl-dev linux-headers
 ---> Running in d4b270d752ee
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/13) Installing libgcc (9.3.0-r2)
(2/13) Installing libstdc++ (9.3.0-r2)
(3/13) Installing binutils (2.34-r1)
(4/13) Installing gmp (6.2.0-r0)
(5/13) Installing isl (0.18-r0)
(6/13) Installing libgomp (9.3.0-r2)
...
redis_1  | 1:M 05 Aug 2020 10:53:48.408 * Ready to accept connections
web_1    |  * Serving Flask app "app.py"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值