在Cassandra Docker中启用Thrift

csc*_*can 12 thrift cassandra docker

我正在尝试启动运行cassandra的docker镜像.我需要使用thrift来与cassandra进行通信,但默认情况下它看起来是禁用的.检查cassandra日志显示:

INFO  21:10:35 Not starting RPC server as requested. 
  Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在启动这个cassandra容器时启用thrift?

我试图设置各种环境变量无济于事:

docker run --name cs1 -d -e "start_rpc=true" cassandra
docker run --name cs1 -d -e "CASSANDRA_START_RPC=true" cassandra
docker run --name cs1 -d -e "enablethrift=true" cassandra
Run Code Online (Sandbox Code Playgroud)

Les*_*ood 26

sed(即仅启用这种行为和后续的定制Dockerfiles)的解决方法是不再需要.

较新的官方Docker容器CASSANDRA_START_RPC使用该-e标志支持环境变量.例如:

docker run --name cassandra1 -d -e CASSANDRA_START_RPC=true -p 9160:9160 -p 9042:9042 -p 7199:7199 -p 7001:7001 -p 7000:7000 cassandra
Run Code Online (Sandbox Code Playgroud)


Jim*_*Dev 15

我一直在使用Docker Cassandra图像遇到同样的问题.您可以在GithubDocker hub上使用我的docker容器,而不是默认的Cassandra映像.

问题是cassandra.yaml文件的start_rpc设置为false.我们需要改变这一点.为此,我们可以使用以下Dockerfile(这是我的图像所做的):

FROM cassandra
RUN sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/cassandra.yaml 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我遇到过同样的问题。但是我没有使用你的叉子(它可能最终会被放弃 :-( ),我只是运行 `docker exec -it cass1 sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/运行官方容器后的 cassandra.yaml`。这也有效! (2认同)