0

我有一个 docker 文件,它的入口点是一个 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日志聚合器所需的位置。

我想运行sedawk超过日志输出。但是,如果我尝试:

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

或者

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

然后当我运行容器时什么都没有显示。没有管道来 sed 的输出php-fpm显示为docker runOK 的输出。

有没有办法确保输出输出到 docker 的输出sedphp-fpm

编辑请注意,我在这两个地方都尝试了明显| sed 's/A/B/g'方法,并且还尝试在两个地方的子外壳中运行管道。两者都不起作用,所以这似乎是一个或问题。$(stuff|sed 's/A/B/g')Dockers2i

4

1 回答 1

0

尝试将 sed 参数放在双引号中。

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

于 2018-04-08T08:15:19.290 回答