当前位置: 首页 > 面试题库 >

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

贲铭
2023-03-14
问题内容

我想知道是否有人尝试使用默认键空间构建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


问题答案:

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



 类似资料:
  • 问题内容: 我有一个应用程序可以使用Git执行各种有趣的操作(例如运行git clone和git push),而我正在尝试对其进行docker-ize。 我遇到了一个问题,尽管我需要能够向容器中添加SSH密钥以供容器“用户”使用。 我尝试将其复制到,进行更改,创建了一个git ssh包装器,但还是没有运气。 这是Dockerfile供参考: 运行git命令,如 问题答案: 原来使用Ubuntu时,

  • 我已经用这个链接备份了我在卡桑德拉的密钥空间cassandra-backup.sh 为了恢复,我写了一个脚本,从包含快照的备份文件夹中复制内容,并粘贴到 /var/lib/cassandra/data/mykeypsace/下的相应目录中,但是当我看到mykeyspace的表内容时,没有恢复任何内容。例如,备份文件夹:path/mykeyspace/tableOne/snapshot/all-co

  • 嘿,我尝试使用此代码自动创建docker容器 但我也得到了这个错误内部服务器错误(“OCI运行时创建失败:container\u linux。go:370:启动容器进程导致:exec:“git clone”:stat git clone:没有这样的文件或目录:未知”) 有什么方法可以解决这个问题吗?或者有其他方法吗?

  • 问题内容: 鉴于: 基于ubuntu的容器:13.10 已安装ssh(通过) 问题:每次启动容器时,我都必须手动运行sshd 尝试过:,但无济于事。 问题:如何设置容器以在容器启动期间自动启动sshd服务? 问题答案: 您可以尝试使用phusion / baseimage-docker实现更优雅的方式 https://github.com/phusion/baseimage- docker#rea

  • 给定: 基于Ubuntu:13.10的容器 已安装ssh(通过)