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

Passing local CQL commands file to Cassandra Docker container

是否可以将 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 会话和 运行 脚本。

如果你想docker容器看到主机系统中的文件,唯一的方法是映射卷。您可以将当前目录映射到 /tmp 并再次 运行 命令 docker exec -i cassandra_1 cqlsh -f /tmp/createTables.cql

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

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

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

-v 选项

希望对您有所帮助!