Docker считывает значение формы bashrc - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь запустить java jar в файле docker и пытаюсь прочитать набор jvm arg в bashrc.Это значение устанавливается с помощью сценария оболочки. Но когда я проверяю процесс Java, работающий внутри контейнера, я не вижу аргумент jvm в выходных данных процесса.Значение присутствует в bashrc.Также echo $ JVM_ARGS показывает правильное значение внутри контейнера.Dockerfile

FROM quay.io/nord-store-eng/base-java8:1.1.1
RUN mkdir -p /opt/test
COPY ./docker.jar /opt/test/docker.jar
COPY ./setenv.sh /opt/test/setenv.sh
RUN chmod +x /opt/test/setenv.sh
RUN /opt/test/setenv.sh
CMD ["sh","-c","java $JVM_ARGS -jar /opt/test/docker.jar"]

Выход процесса ps command output

1 Ответ

0 голосов
/ 06 декабря 2018

Я подозреваю, что проблема в том, что вы используете sh, который не читает с вашего bashrc.

- norc Не читайте и не выполняйте общесистемный файл инициализации / etc / bash.bashrc и файл личной инициализации ~ / .bashrc, если оболочка является интерактивной.Эта опция включена по умолчанию, если оболочка вызывается как sh.- https://unix.stackexchange.com/a/94494/54089

Можете ли вы попробовать указать 'bash' вместо 'sh'?

CMD ["bash","-c","java $JVM_ARGS -jar /opt/test/docker.jar"]

Или сохранить sh (например, у alpine нет bash):

CMD ["sh","-c","source ~/.bashrc; java $JVM_ARGS -jar /opt/test/docker.jar"]

Или с сохранением sh, абсолютный путь к bashrc:

CMD ["sh","-c","source /root/.bashrc; java $JVM_ARGS -jar /opt/test/docker.jar"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...