openshift上的jhipster:无法访问jarfile

时间:2018-09-24 09:35:32

标签: docker openshift jhipster

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

_start

因为entrypoint.sh包含

,这并不令人惊讶。
main

Error: Unable to access jarfile //app.war 不包含#!/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" "$@" 值,因为openshift使用随机用户ID,因此找不到该jar。

我用${HOME}生成了配置文件,但Dockerfile不适合这种情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我会提供2种选择。


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

中进行设置

通常,这与Security Context Constraints (SCCs)有关。

要发现jhipster用户的UID,请在容器中放入一个shell并执行

id jhipster

如果由于Java应用程序无法启动而无法打开容器而无法获得外壳,请将其添加到容器的部署配置中:

command: ["sh"]
stdin: true

用bash或图像可能具有的任何其他外壳代替sh。然后,您可以从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文件权限,此选项可能仍然会失败。