【问题标题】:PHP Docker write to stderr through filePHP Docker通过文件写入stderr
【发布时间】:2018-02-16 16:20:00
【问题描述】:

是否可以将纯文本日志文件重定向到 PHP 可写的 Docker 容器中的 stderr?

我有一个正在写入文件的 PHP 应用程序,我们正试图在不更改任何代码的情况下将其移动到 Docker 容器中。我尝试过符号链接,但这会导致权限错误。

【问题讨论】:

  • docker 卷呢?
  • 这可以工作并且已经被考虑过,但我们希望有一个无缝的解决方案,它不会在主机目录中显示任何内容,但可以通过docker logs访问
  • serversforhackers.com/c/dckr-file-permissions。这可能有助于解决您的问题。

标签: php docker logging stderr


【解决方案1】:

不确定您尝试了哪种类型的符号链接,但您应该可以使用类似

运行 ln -sf /dev/stderr /path/to/your/text.log

在您的 Dockerfile 中(其中 text.log 路径是容器内的路径)。

【讨论】:

  • 不幸的是,符号链接不起作用。 Apache 用户在使用此解决方案时抛出了权限错误。
【解决方案2】:

我最终找到了这个解决方案,它使用fifopipe 将数据通过管道传输到标准输出。

# Allow `nobody` user to write to /dev/stderr
mkfifo -m 600 /tmp/logpipe
chown nobody:nobody /tmp/logpipe
cat <> /tmp/logpipe 1>&2 &

https://github.com/moby/moby/issues/6880#issuecomment-344114520

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2020-03-18
    相关资源
    最近更新 更多