docker-compose创建redis集群的问题

新手上路,请多包涵

用docker-compose创建redis集群的最后一个步骤,就是使用redis-cli把启动起来的redis节点串联起来,可是redis-cli --cluster create有个交互的过程(需要输入"yes"),想问怎么在docker-compose里完成这整个操作呢
compose里的redis-cli服务配置:

  redis-cli:
    image: redis:5.0.1-alpine
    depends_on:
      - redis1
      - redis2
      - redis3
      - redis4
      - redis5
      - redis6
    links:
      - redis1
      - redis2
      - redis3
      - redis4
      - redis5
      - redis6
    entrypoint:
      - redis-cli
      - --cluster
      - create
      - redis1:${client_port}
      - redis2:${client_port}
      - redis3:${client_port}
      - redis4:${client_port}
      - redis5:${client_port}
      - redis6:${client_port}
      - --cluster-replicas
      - '1'
      - -a
      - ${client_pwd}

然后是启动起来以后出现的交互提示:

Attaching to redis-cluster_redis-cli_1_99db7133d585
redis-cli_1_99db7133d585 | Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
redis-cli_1_99db7133d585 | >>> Performing hash slots allocation on 6 nodes...
redis-cli_1_99db7133d585 | Master[0] -> Slots 0 - 5460
redis-cli_1_99db7133d585 | Master[1] -> Slots 5461 - 10922
redis-cli_1_99db7133d585 | Master[2] -> Slots 10923 - 16383
redis-cli_1_99db7133d585 | Adding replica redis4:6379 to redis1:6379
redis-cli_1_99db7133d585 | Adding replica redis5:6379 to redis2:6379
redis-cli_1_99db7133d585 | Adding replica redis6:6379 to redis3:6379
redis-cli_1_99db7133d585 | M: 3193369a87bdd75dec82dae302bfc703962b029f redis1:6379
redis-cli_1_99db7133d585 |    slots:[0-5460] (5461 slots) master
redis-cli_1_99db7133d585 | M: a9085988e16f91ecb4ac37e39fb360b90f5f16bc redis2:6379
redis-cli_1_99db7133d585 |    slots:[5461-10922] (5462 slots) master
redis-cli_1_99db7133d585 | M: 3e71facdb786284e5b4c65e396c72a1a2e08aff8 redis3:6379
redis-cli_1_99db7133d585 |    slots:[10923-16383] (5461 slots) master
redis-cli_1_99db7133d585 | S: 0c8070d7dc8cd6288a7cd4495fb860a4190b0f54 redis4:6379
redis-cli_1_99db7133d585 |    replicates 3193369a87bdd75dec82dae302bfc703962b029f
redis-cli_1_99db7133d585 | S: 8aa17809f2e74f8bb91ac0e5d14aa810036ccde7 redis5:6379
redis-cli_1_99db7133d585 |    replicates a9085988e16f91ecb4ac37e39fb360b90f5f16bc
redis-cli_1_99db7133d585 | S: 3fed12ec7f67d6cd14b873155d3d956c0317bf39 redis6:6379
redis-cli_1_99db7133d585 |    replicates 3e71facdb786284e5b4c65e396c72a1a2e08aff8
redis-cli_1_99db7133d585 | Can I set the above configuration? (type 'yes' to accept): redis-cluster_redis-cli_1_99db7133d585 exited with code 0

最后需要交互输入个yes,结果容器就退出了

阅读 3.7k
1 个回答
新手上路,请多包涵
#!/bin/sh

echo "yes" | redis-cli --cluster create `ping redis1 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    `ping redis2 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    `ping redis3 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    `ping redis4 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    `ping redis5 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    `ping redis6 -c1 | sed '1{s/[^(]*(//;s/).*//;q}'`:$CLIENT_PORT \
    --cluster-replicas "1" -a $CLIENT_PWD
tail -f /dev/null
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题