小编典典

使用cassandra在docker容器内自动创建密钥空间

docker

我想知道是否有人尝试使用默认键空间构建cassandra
docker镜像,但我尝试在BUILD时间内完成该操作,但由于cassandra不在该阶段运行,因此无法正常工作。这类似于以下内容:

FROM cassandra:2.0
COPY ../somewhere/keyspace_definition.txt /src/keyspace_definition.txt
RUN /usr/bin/cqlsh -f /src/keyspace_definition.txt

我的新方法是从入口点脚本执行此操作,但是,如果其他人有更好的主意,我现在想。

快乐运输:D


阅读 367

收藏
2020-06-17

共1个答案

小编典典

今天解决了这个问题。构建映像,该映像将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否则脚本将无限期运行。

2020-06-17