如何通过Docker Compose配置bitnami/cassandra:4.1的密码?
问题分析与解决
问题描述
使用以下docker-compose部署bitnami/cassandra:4.1容器:
version: "3.8" services: cassandra: container_name: cassandra image: bitnami/cassandra:4.1 ports: - "9042:9042" environment: - CASSANDRA_AUTHENTICATOR=PasswordAuthenticator - CASSANDRA_USER=cassandra - CASSANDRA_PASSWORD=password
进入容器执行echo $CASSANDRA_PASSWORD能正确显示设置的password,但连接Cassandra时仍需使用默认的cassandra/cassandra账号密码。将认证方式改为AllowAllAuthenticator时无需认证即可正常连接,说明部分环境变量生效,但无法修改连接密码。
原因
Bitnami Cassandra镜像的用户初始化逻辑仅在首次启动且数据目录为空时执行。如果之前已经启动过容器,镜像会自动创建匿名数据卷存储Cassandra的系统表(包括system_auth表,存储用户认证信息),后续修改环境变量启动容器时,因为数据卷已存在,镜像不会重新初始化用户,依然使用之前创建的默认账号密码。
解决步骤
- 停止并移除现有容器:
docker-compose down
- 删除Cassandra相关的匿名数据卷(如果是自定义命名卷,替换为对应卷名):
docker volume rm $(docker volume ls -q | grep cassandra)
- 重新启动容器,此时镜像会根据设置的环境变量初始化新的超级用户和密码:
docker-compose up -d
注意事项
如果需要持久化Cassandra数据,建议在docker-compose中显式配置数据卷,并且首次启动容器时就设置好正确的CASSANDRA_USER和CASSANDRA_PASSWORD,避免后续修改环境变量无法生效。
内容的提问来源于stack exchange,提问作者Jackie
相关产品推荐
相关产品推荐

