Установить буферизацию строки в выводе контейнера - PullRequest
0 голосов
/ 28 мая 2018

Я использую Образ Java S2I для контейнера, работающего в Openshift (в помещении).Моя проблема в том, что выходные данные изображения буферизируются на странице, и oc logs ... не показывает мне последние журналы.

Я, возможно, мог бы раскрутить мое изображение докера, которое будет делать stdbuf -oL -e0 java ..., но я бы предпочелпридерживайтесь «официального» изображения (просто добавив банку к /deployments).Есть ли способ уменьшить буферизацию (использовать буферизацию строки вместо буферизации страниц) или очистить вывод по требованию?

EDIT : Кажется, я мог бы обновить конфигурацию развертывания и передатьstdbuf там, но это означает, что мне придется самому составить все арги.Идеальным решением было бы передать --tty do Docker, но я не понимаю, как пользовательские аргументы могут быть переданы таким образом в Openshift.

1 Ответ

0 голосов
/ 28 мая 2018

В вашем репо попробуйте создать файл .s2i/bin/run.В него добавьте:

#/bin/bash

exec stdbuf -oL -e0 /usr/local/s2i/run

Я всегда забываю, где находятся скрипты S2I assemble и run в образе Java S2I, поэтому вам может потребоваться заменить /usr/local/s2i на правильный путь.

Что добавляет этот файл, так это то, что он будет запускаться как команда запуска вместо исходного run сценария.Затем вы можете запустить оригинальный скрипт с помощью stdbuf.Убедитесь, что вы используете exec, так что подпроцесс заменяет текущий, иначе сигналы не будут распространяться должным образом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...