0
这里是我的docker-compose.yaml
:填充卡桑德拉完成
version: '3'
services:
cassandra:
container_name: cassandra
image: cassandra:3.10
ports:
- 9142:9042
volumes:
- $PWD/src/database/migrations:/migrations
depends_on:
- mysql
mysql:
image: mysql:5.7
volumes:
- ./src/database/migrations:/docker-entrypoint-initdb.d
ports:
- 3307:3306
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=leonardo
- MYSQL_ALLOW_EMPTY_PASSWORD=1
而且shell脚本bootstrap.sh
开始:
#!/bin/bash
set -e
docker-compose -f $PWD/docker-compose.yaml down
docker-compose -f $PWD/docker-compose.yaml up -d
这是工作和火灾堆栈。 现在我想一个密钥空间添加到卡桑德拉,不过,下面这行抛出一个错误:
docker-compose -f $PWD/docker-compose.yaml exec cassandra /bin/sh -c $'cqlsh cassandra -e "CREATE KEYSPACE mykeyspace WITH replication = {\'class\': \'SimpleStrategy\', \'replication_factor\': \'1\'} AND durable_writes = true;"'
Connection error: ('Unable to connect to any servers', {'172.18.0.2': error(111, "Tried connecting to [('172.18.0.2', 9042)]. Last error: Connection refused")})
卡桑德拉恐怕还没有初始化。 这有什么好方法?
谢谢,它的伎俩。而不是等待30秒,是否有可能使其基于事件?我们无法保证Cassandra在30秒后准备就绪 - 这只是一个假设(尽管是一个很好的假设)。 – ChrisRich
我更新了我的答案,用“直到循环”替换“睡眠”,这使得它可以在任何启动时间内工作。 – haradwaith