如何 运行 Hazelcast 3.11 使用来自 Docker 的组(集群)名称?

How to run Hazelcast 3.11 with a group (cluster) name from Docker?

如何运行 Hazelcast 3.11 版本加上组名?在更高版本中,有一个 HZ_CLUSTERNAME 的环境变量,但在 3.11 中,我在文档中找不到类似的东西。这就是我尝试启动 Hazelcast

的方式
docker run \
    -itd \
    --network hazelcast-network \
    --rm \
    -e HZ_CLUSTERNAME=default_groupname \
    -p 5701:5701 hazelcast/hazelcast:3.11.4

我也试过这样启动它

docker run \
    -itd \
    --network hazelcast-network \
    --rm \
    -v "$(pwd)"/hazelcastconf/:/mnt \
    -p 5701:5701 hazelcast/hazelcast:3.11.4 \
    java -Dhazelcast.config=/mnt/hazelcast.xml

配置如下

<hazelcast xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hazelcast.com/schema/config http://www.hazelcast.com/schema/config/hazelcast-config-3.11.xsd">
    <group>
        <name>default_groupname</name>
    </group>
    <network>
        <port auto-increment="true" port-count="100">5701</port>
        <join>
            <multicast enabled="false"></multicast>
        </join>
    </network>
    <map name="sessions">
        <time-to-live-seconds>1000</time-to-live-seconds>
    </map>
</hazelcast>

有没有办法在 Docker 中启动时正确设置组名?

在 Hazelcast 4.1 中添加了配置覆盖(根据 Release Notes)。 有关其用法的详细信息,请参见 Reference Manual.

我建议升级您的 Hazelcast 版本。 如果您不想升级或不能升级,还有一种方法可以解决 Hazelcast 3 中的问题。11.z

如您所料,方法是将自定义配置文件作为卷映射到容器中。

一种可能的解决方案是将配置文件直接映射到 Hazelcast 安装目录 ("/opt/hazelcast")。

docker run ... \
 -v "$(pwd)/hazelcastconf/hazelcast.xml:/opt/hazelcast/hazelcast.xml" \
 hazelcast/hazelcast:3.11.4

或者您可以在JAVA_OPTS环境变量中定义自定义路径:

docker run ... \
 -v "$(pwd)/hazelcastconf:/mnt" \
 -e JAVA_OPTS=-Dhazelcast.config=/mnt/hazelcast.xml \
 hazelcast/hazelcast:3.11.4

Docker图像中的启动命令(CMD)随着时间的推移发生了变化,最好不要触摸它。 ;)