【问题标题】:Passing local CQL commands file to Cassandra Docker container将本地 CQL 命令文件传递给 Cassandra Docker 容器
【发布时间】:2018-04-22 15:51:24
【问题描述】:

是否可以将 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 cassandra cql cqlsh


    【解决方案1】:

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

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

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

    希望有帮助!

    【讨论】:

    • 这仅用于设置 Jenkins e2e 环境,因此此解决方案完美运行。谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多