docker - 将本地 CQL 命令文件传递给 Cassandra Docker 容器

标签 docker cassandra cql cqlsh

是否可以将 CQL 命令的本地文件传递给 Cassandra Docker 容器?

使用 docker exec 失败,因为它找不到本地文件:

me@meanwhileinhell:~$ ls -al
-rw-r--r--  1 me me  1672 Sep 28 11:02 createTables.cql

me@meanwhileinhell:~$ docker exec -i cassandra_1 cqlsh -f createTables.cql
Can't open 'createTables.cql': [Errno 2] No such file or directory: ‘createTables.cql'

我真的不想打开 bash session 并以这种方式运行脚本。

最佳答案

容器需要先能够访问脚本,然后才能执行它(即脚本文件需要在容器内)。如果这只是脚本的一次性快速运行,最简单的方法可能是使用 docker cp 命令将脚本从主机复制到容器:

$ docker cp createTables.cql container_name:/path/in/container

然后,您应该能够使用 docker exec 在您将其复制到容器内的任何路径上运行脚本。如果这是一项正在进行的工作,并且您可能在处理脚本时更改并重新运行脚本,则最好从容器内的主机安装一个包含脚本的目录。为此,您可能需要 -v docker run 选项。

希望有帮助!

关于docker - 将本地 CQL 命令文件传递给 Cassandra Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205466/

相关文章:

javascript - 无法将数据从js传递到node.js中的jade

java - Apache Cassandra 中的 DML 是什么?

Cassandra 选择性复制

cassandra - 获取 Cassandra 中 Set type 列中元素的数量

Dockerfile - 入口点不保存变量

docker - 如何在容器内进行 rethinkdb 的自动数据库转储?

docker - Kubernetes 为运行 JVM 的 Pod 抛出 OOM

mysql - 将数据库从Docker备份到真实计算机

cassandra - 如何在不停机的情况下将单 token 集群迁移到新的 vnodes 集群?

database - 在 Cassandra 中使用计数器进行数据建模,过期列