jhipster на openshift: невозможно получить доступ к jarfile - PullRequest
0 голосов
/ 24 сентября 2018

Когда я развертываю свое приложение 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} не содержит исключение *Значение 1008 *, поскольку openshift использует случайный идентификатор пользователя, поэтому файл jar не может быть найден.

Я сгенерировал конфигурацию с помощью jhipster openshift, но Dockerfile не подходит для этого контекста.

Любые идеи

1 Ответ

0 голосов
/ 25 сентября 2018

Я бы предложил 2 варианта.


Вариант № 1: Набор в развертывании securityContext.runAsUser: <the UID of the jhipster user>

В общем, это относится к Ограничения контекста безопасности (SCC) .

Чтобы узнать UID пользователя jhipster, получите оболочку внутри контейнера и выполните

id jhipster

Если вы не можете получить оболочку, потому чтоконтейнер не появится из-за того, что приложение Java не запускается, добавьте это в конфигурацию развертывания для контейнера:

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)


Option # 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,однако, эта опция все еще может не работать.

...