今天解决了这个问题。构建映像,该映像将docker-entrypoint.sh
在修改之前附加一个修改过的默认Cassandraexec "$@"
for f in docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.cql) echo "$0: running $f" && until cqlsh -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
将所需的* .cql放在中的图像中docker-entrypoint-initdb.d/
。
映像将启动,启动cassandra,然后重试插入数据库,除非成功执行。只要确保您的脚本是IF NOT EXISTS
否则脚本将无限期运行。