Docker 使用脚本启动 Cassandra 时出现根错误

Docker root error when starting Cassandra with a script

我正在尝试在 Docker 中启动 Cassandra。

如果我的 Docker 文件以

结尾
CMD["cassandra", "-f"]

开始没问题。但是,当我使用脚本执行此操作时:

COPY ./launch_cassandra.sh /tmp/cassandra/launch_cassandra.sh
CMD["sh", "/tmp/cassandra/launch_cassandra.sh"]

with launch_cassandra.sh 仅包含:

cassandra -f

我收到以下错误:

Running Cassandra as root user or group is not recommended - please start Cassandra using a different system user.

为什么这些不等价?为什么脚本 运行 是根目录?

如上面评论所述,我的 Dockerfile 扩展了官方文件(使用 FROM cassandra),其中使用入口点脚本 (docker-entrypoint.sh) 来设置一些变量。

所以这些确实是在 CMD 包含 cassandra 时设置的,但不是通过脚本设置的:这就是差异的来源。

如果您正在扩展 cassandra 图像,您会创建一个 cassandra 用户(名称可能不同,请参考所需图像的 Dockerfile,例如 https://github.com/docker-library/cassandra/blob/master/3.11/Dockerfile)。
唯一缺少的是在您的 Dockerfile 上设置用户,例如:

FROM cassandra:3.11.10
USER cassandra
CMD ["cassandra" "-f"]