cassandra cql(cqlsh)docker容器到docker cassandra群集

hi3rlvi2  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(539)

我正在尝试为cassandra cql创建一个新的docker容器,它连接到作为另一个docker容器运行的cassandra集群。
现状:
我通过执行以下命令创建了一个新的cassandra图像“cassandra”和名为“container node”的容器:
docker pullCassandra
docker images |格雷普·Cassandra
docker run-d--命名cassandra节点--发布9042:9042 cassandra
连接到容器:docker exec-it cassandra node bash(在127.0.0.1:9042连接到测试集群)

键空间创建

create keyspace:create keyspace first\u keyspace with replication={'class':'simplestrategy','replication\u factor':1}
连接到密钥空间:使用第一个密钥空间
创建表:首先创建表\u keyspace.user(userid int primary key,username text,city text);插入数据:
在用户(userid,username,city)值中插入(1,'john','paris');
在用户(userid,username,city)值中插入(2,'abd','safrica');
取数:从用户中选择*;

详细问题陈述

想要为cql(cqlsh)创建一个新的docker容器(使用dockerfile),它将执行以下任务:
连接到作为docker容器运行的cassandra群集(cassandra主机)
从source.sql文件执行所有任务的add/update/delete函数读取。
我想知道从哪里开始。如有任何帮助,指点者将不胜感激。

gorkyyrv

gorkyyrv1#

不确定cassandra是否支持.sql文件。我想这是个打字错误。
从.cql文件加载数据的命令如下:

bin/cqlsh --file 'file_name'

您只需在容器中运行这样的命令。但在此之前,您需要确保该文件在容器中是可访问的。有两种方法可以做到这一点:在创建映像(对于init脚本类型的需求)和卷Map(对于其他需求)期间将文件复制到容器中。dockerfile示例:

FROM cassandra
COPY some-file.cql /home/some-file.cql
CMD["cqlsh","<cassandra-docker-container-ref>","-f","/home/some-file.sql"]

在这里 cassandra-docker-container-ref 可以是cassandra docker服务器的id或名称。我建议用这个名字。
使用如下命令生成图像:

docker build -t cassandra-seed-script .

并将图像作为容器运行,然后立即将其删除:

docker run -it --rm cassandra-seed-script

如果需要定期使用不同的cql文件执行此操作,请将容器中的位置与主机进行卷Map,并使命令动态(或在启动容器时传递命令)。

相关问题