有人能告诉我如何更改docker容器中的cassandra.yaml吗? 我想在docker中启用密码身份验证以进行cassandra访问。
答案 0 :(得分:2)
如果您正在使用官方的Cassandra Docker镜像,那么您已经拥有了docker-entrypoint.sh。有关已定义的一些变量,请参阅:https://github.com/docker-library/cassandra/blob/master/docker-entrypoint.sh作为示例。
要在容器启动时包含这些内容,您可以:
for yaml in \
broadcast_address \
broadcast_rpc_address \
[your_selected_yaml_variable] \
...
environment:
- CASSANDRA_SEEDS=DC1C1,DC1C2,DC2C1,DC2C2
- CASSANDRA_CLUSTER_NAME=Dev_Cluster
- CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
- CASSANDRA_[YOUR_SELECTED_YAML_VARIABLE]
答案 1 :(得分:0)
您可以创建一个docker入口点(基本上它是一个脚本文件,指示Docker在容器上复制并将其定义为入口点)。
COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["bin/sh", "/docker-entrypoint.sh"]
在该文件中,您可以使用sed在cassandra.yaml文件中执行您喜欢的任何更改。
sed -ri '/^# data_file_directories:/{n;s/^#.*/'" - $CASSANDRA_DATA_DIRECTORY"'/}' "$CASSANDRA_CONFIG/cassandra.yaml"
请注意,$ CASSANDRA_DATA_DIRECTORY和$ CASSANDRA_CONFIG是预先定义的一些变量。