将本地 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
选项
希望对您有所帮助!
是否可以将 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
选项
希望对您有所帮助!