打开移位上的 jhipster:无法访问 jarfile



当我将我的 jhipster 应用程序部署到 openshift 时,它失败了

Error: Unable to access jarfile //app.war

这并不奇怪,因为 entrypoint.sh 包含

#!/bin/sh
echo "The application will start in ${JHIPSTER_SLEEP}s..." && sleep 
${JHIPSTER_SLEEP}
exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar 
"${HOME}/app.war" "$@"

${HOME}不包含 expeced/home/jhipster值,因为 openshift 使用随机用户 ID,因此找不到 jar。

我用jhipster openshift生成了配置,但 Dockerfile 不适合这种情况。

有什么想法吗?

我会提供 2 个选项。


选项 #1:在部署securityContext.runAsUser: <the UID of the jhipster user>中设置

通常,这与安全上下文约束 (SCC( 有关。

要发现 jhipster 用户的 UID,请在容器内获取一个 shell 并执行

id jhipster

如果由于 Java 应用程序未启动而导致容器无法启动而无法获取 shell,请将以下内容添加到容器的部署配置中:

command: ["sh"]
stdin: true

将 sh 替换为 bash 或图像可能具有的任何其他外壳。然后,您可以从 OpenShift 控制台或使用oc exec放入容器中(请参阅 https://docs.openshift.com/container-platform/3.9/dev_guide/executing_remote_commands.html#basic-usage(


选项 #2:覆盖启动entrypoint.sh脚本。例如,将类似以下内容添加到部署配置中:

command: ["java"]
args: [
"${JAVA_OPTS}",
"-Djava.security.egd=file:/dev/./urandom",
"-jar",
"/home/jhipster/app.war"
]

我认为app.war是正确的,它不是app.jar.

但是,根据/home/jhipster/app.war文件权限,此选项可能仍会失败。

最新更新