Cassandra CQL(cqlsh)docker容器到docker Cassandra群集
我正在尝试为Cassandra CQL创建一个新的docker容器,该容器连接到作为另一个docker容器运行的Cassandra集群 当前情况: 我通过执行以下命令创建了一个新的Cassandra图像“Cassandra”和名为“container node”的容器:Cassandra CQL(cqlsh)docker容器到docker Cassandra群集,docker,cassandra,cql,cqlsh,Docker,Cassandra,Cql,Cqlsh,我正在尝试为Cassandra CQL创建一个新的docker容器,该容器连接到作为另一个docker容器运行的Cassandra集群 当前情况: 我通过执行以下命令创建了一个新的Cassandra图像“Cassandra”和名为“container node”的容器: docker pull cassandra docker images| grep cassandra docker run-d--命名cassandra节点--发布9042:9042 cassandra 连接到容器:dock
- docker pull cassandra
- docker images| grep cassandra
- docker run-d--命名cassandra节点--发布9042:9042 cassandra
- 连接到容器:docker exec-it cassandra node bash (连接到127.0.0.1:9042处的测试群集)
- 创建键空间:首先创建键空间\u键空间,复制={'class':'SimpleStrategy','replication\u factor':1}
- 连接到键空间:使用第一个键空间
- 创建表:首先创建表\u keyspace.user(USERID int主键、用户名文本、城市文本); 插入数据:
- 在用户(USERID、USERNAME、CITY)值中插入(1,'JOHN','PARIS')李>
- 在用户(USERID、USERNAME、CITY)值中插入(2,'ABD','SAFRICA')李>
- 获取数据:从用户中选择*李>
如果有任何帮助,指针们将不胜感激。不确定cassandra是否支持.sql文件。我认为这是一个打字错误 从.cql文件加载数据的命令如下:
bin/cqlsh --file 'file_name'
您所需要做的就是在容器中运行这样的命令。但在此之前,您需要确保该文件在容器中是可访问的。有两种方法可以做到这一点:在映像创建期间(对于init脚本类需求)和卷映射期间(对于其他需求),将文件复制到容器中。Dockerfile示例:
FROM cassandra
COPY some-file.cql /home/some-file.cql
CMD["cqlsh","<cassandra-docker-container-ref>","-f","/home/some-file.sql"]
并将图像作为容器运行,然后立即将其删除:
docker run -it --rm cassandra-seed-script
如果您需要定期使用不同的cql文件执行此操作,请将容器中的位置与主机进行卷映射,并使命令动态(或在启动容器时传递命令)。为什么不使用
docker exec-ti running_image cqlsh
?Alex,感谢您的回复。我需要另一个容器cqlsh,它将连接到外部Cassandra集群以执行键空间执行
docker run -it --rm cassandra-seed-script