将在Docker容器中创建的日志文件重定向到stdout / stderr

凯西·哈里斯(Casey Harrils)

我有以下Dockerfile:

FROM ubuntu:16.04
RUN apt-get update
VOLUME ["/LOGS"]
COPY ./testServer .
ENTRYPOINT ./testServer 8600

“ testServer”具有正在写入的日志文件。它们位于目录“ LOGS”中。每次启动“ testServer”时,都会创建一个新日志。我想要做的是将目录中的最新日志文件“尾巴”到stdout / stderr。

我尝试添加:

CMD ["/bin/sh", "-c", "tail $( ls -Art /LOGS | tail -n 1 ) > out_server.log 2>&1"]

到Dockerfile(然后重新构建映像),但是它不起作用。

如何才能做到这一点?

TIA

ftzeng12

而是使用tail,可以将日志文件符号链接到容器进程的stdout。为此,您需要将可执行文件包装在单独的脚本中,以便将其作为与容器主进程分开的进程启动。

要执行的脚本:

#!/bin/bash

# The application log will be redirected to the main docker container process's stdout, so # that it will show up in the container logs
touch /my/app/application.log
ln -sf /proc/1/fd/1 /my/app/application.log

# Execute my app
./testServer 8600

然后在docker文件中复制并执行脚本

COPY start_server.sh /the/above/script/start_server.sh
CMD ["/bin/bash", "/the/above/script/start_server.sh"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将stdout / stderr重定向到日志文件

将stdout和stderr重定向到文件,并将stderr重定向到stdout

bash:将stderr重定向到文件,将stdout + stderr重定向到屏幕

将后台作业的stdout / stderr从控制台重定向到日志文件?

将带有时间戳的stdout / stderr输出重定向到日志文件

将子进程的stdout / stderr重定向到文件

stdout和stderr重定向到不同的文件

重定向到文件 STDOUT 首先是 STDERR

永久将stderr重定向到stdout

将stdout重定向到tcsh中的stderr

将stdout和/或stderr重定向到变量中的路径

如何将stdout和stderr重定向到文件并显示stderr到控制台?

在Bash中重定向stderr和stdout

将stderr复制到bash中的另一个文件时重定向stdout和stderr

如何将bst脚本中的stdout和stderr都重定向到文件?

如何将stderr和stdout重定向到不同的文件并在终端中显示?

将stderr和stdout重定向到Bash中的文件的不同方法?

将stdout和stderr重定向到文件,将stderr重定向到屏幕,同时保留输出顺序

在实时输出时,如何将命令的stdout和stderr重定向到控制台和日志文件?

将stdout和stderr一起重定向VS重定向stdout,然后将stderr重定向到stdout的文件

将STDOUT重定向到新窗口,将STDERR重定向到相同的新窗口,以及一个日志文件

有没有办法将所有stdout和stderr从脚本中重定向到systemd日志?

如何执行从终端将stdout和stderr重定向到systemd日志的程序?

将脚本stderr&stdout重定向到文件,但是也将stdout保留到tty吗?

如何使用Unix重定向在滚动文件中重定向stdout和stderr

如何在Java中将子进程stdout / stderr重定向到主进程stdout / stderr?

在C中重定向stderr

在csh中重定向stderr

将 stdout 和 stderr 都重定向到文件时,为什么必须将 stderr 重定向到 stdout 放在最后?