【发布时间】:2017-04-01 12:22:17
【问题描述】:
我有一个 php-fpm docker 容器。 php-fpm 在容器内运行,我可以在主机上获取 php-fpm 的日志吗?如果可以,怎么办?
【问题讨论】:
标签: php docker containers
我有一个 php-fpm docker 容器。 php-fpm 在容器内运行,我可以在主机上获取 php-fpm 的日志吗?如果可以,怎么办?
【问题讨论】:
标签: php docker containers
常见的做法是容器内的应用程序不记录到文件,而是在stdout/stderr 上输出日志。容器主进程打印到stdout/stderr的任何内容都被docker内置的日志工具收集,可以使用docker logs <container-name>查看。
默认情况下,日志使用json-file 日志驱动程序存储在每个容器中,并且在容器本身被删除时将被删除,但是还有其他可用的日志驱动程序(请参阅Configure logging drivers)允许您发送这些日志到(例如)syslog、journald、gelf。
另见
【讨论】:
php-fpm 引入的换行符和其他 cmets 破坏或损坏。
Docker 容器的标准是登录到stdout/stderr。但是,这对于某些 PHP 运行时效果不佳,例如 php-fpm,因为日志在 length 和 format 中是如何被破坏的。
因此,我改变了在卷上写入日志的方法,并使用 sidecar container 将其放入 stderr 并因此进入 Docker 的日志收集和/或您的协调器。
示例docker-compose.yml 部分:
cli:
build: .
volumes:
- logs:/srv/annotations/var/logs
logger:
image: busybox:1.27.2
volumes:
- logs:/logs
# be careful, this will only tail alredy existing files
command: tail -f /logs/all.json
depends_on:
- cli
【讨论】: