0

我正在部署一个Nginx容器,并在标准Dockerfile日志中使用这些命令重定向到容器日志

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

如果我删除上述命令,则会按预期写入日志access.log和文件。error.log如何将日志保存在文件中并将它们发送到容器日志?

4

2 回答 2

1

1-下面的命令不会重定向 to 的内容,/var/log/nginx/access.log而是/dev/stdout/dev/stdoutto创建了一个符号链接/var/log/nginx/access.log。换句话说,/var/log/nginx/access.log只是一个符号链接。

ln -sf /dev/stdout /var/log/nginx/access.log
# ls -alh /var/log/nginx/access.log
lrwxrwxrwx 1 root root 11 Nov 23 01:12 /var/log/nginx/access.log -> /dev/stdout

2- 出于两个原因,根本不建议将文件存储在 docker 容器中。首先,一旦重新创建容器,文件将丢失。其次,这些文件可能会增长到巨大的大小,尤其是在这些文件没有日志轮换的情况下。您可以使用 FluentD 或配置 docker 本身将日志转发到外部服务器或主机节点上的文件,而不是在容器内保留副本。

于 2020-02-27T08:51:57.127 回答
0

您可以尝试让日志写入文件,然后在入口点跟踪文件。

tail -f /var/log/nginx/access.log /var/log/nginx/error.log

于 2020-02-27T07:43:11.160 回答