通过外部 yml 文件配置 Hazelcast

Configure Hazelcast via external yml-file

我在类路径中有一个 运行 hzc-yml 配置 - 生成的 jar 文件在 docker 上下文中工作正常。现在我想从外部加载这个 yml 文件。我将这个 startup-属性 添加到我的 DOCKERFILE:

-Dhazelcast.config=`./hazelcast.yaml`

整个 DOCKERFILE 看起来像:

FROM openjdk:14
VOLUME /tmp
WORKDIR /service
RUN mkdir /service/logs
COPY jar/hazelcast.yaml hazelcast.yaml
COPY jar/log4j.properties log4j.properties
COPY jar/hzc-service.jar hzc-service.jar
ENTRYPOINT exec java \
-Dhazelcast.config=`./hazelcast.yaml` \
-Dhazelcast.logging.type=log4j \
-Dlog4j.configuration=file:./log4j.properties \
-Djava.security.egd=file:/dev/./urandom \
--add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED \
$JAVA_OPTS \
-jar hzc-service.jar

似乎服务想要应用外部 yml 文件,但我总是得到这个错误:

hzc-服务 | /bin/sh: ./hazelcast.yaml: 权限被拒绝

我对文件应用了“chmod 777”但没有任何效果。

感谢

这看起来不对:

 -Dhazelcast.config=`./hazelcast.yaml` 

只需删除反引号并将文件名放在引号之间:

 -Dhazelcast.config='./hazelcast.yaml' 

使用反引号字符,您在 bash 中打开一个子外壳,并尝试 运行 其中的 hazelcast.yaml (这当然没有意义)。