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