не может применить sed к стандартному выводу в образе докера

avatar
simbo1905
7 апреля 2018 в 21:51
232
1
0

У меня есть файл докера, точка входа которого представляет собой сценарий s2i/bin/run:

#!/bin/bash

export_vars=$(cgroup-limits); export $export_vars

exec /opt/app-root/services.sh

Скрипт services.sh запускает php-fpm и nginx:

php-fpm 2>&1
nginx -c /opt/app-root/etc/conf.d/nginx/nginx.conf
# this echo to stdout is needed otherwise no stdout doesn't show up on the docker run output
echo date 2>&1

Сценарии php регистрируются на stderr, так что скрипт выполняет 2>&1 для перенаправления на stdout, что необходимо для агрегатора журналов.

Я хочу запустить sed или awk для вывода журнала. Но если я попробую:

php-fpm 2>&1 | sed 's/A/B/g'

или

exec /opt/app-root/services.sh | sed 's/A/B/g'

Затем при запуске контейнера ничего не появляется. Без канала для sed вывод php-fpm отображается как вывод docker run в порядке.

Есть ли способ sed вывода php-fpm, гарантирующий, что вывод попадет в вывод докера?

Изменить Обратите внимание, что я попробовал очевидное | sed 's/A/B/g' в таких мест и был также пытаться запустить трубу в подпункте <33579983337146> в местах мест . Ни один из них не работает, так что это похоже на проблему Docker или s2i.

Источник

Ответы (1)

avatar
SAB
8 апреля 2018 в 08:15
0

Попробуйте заключить аргументы sed в двойные кавычки.

php-fpm 2>&1 | sed "s/A/B/g"

simbo1905
8 апреля 2018 в 08:16
0

В вопросе говорится, что я пробовал это, и это не работает.

SAB
8 апреля 2018 в 08:25
0

Я видел некоторые случаи, когда одинарная кавычка не давала нам точного вывода внутри сценария оболочки, поэтому попросили попробовать сохранить двойные кавычки (") .