【问题标题】:How to log to a file from a dockerized php app如何从 dockerized php 应用程序记录到文件
【发布时间】:2021-07-12 11:21:49
【问题描述】:

我有一个 php 应用程序 dockerized。 我的问题是如何将 php 服务中的错误捕获到主机上的专用文件中。 docker 文件看起来是下一个:

version: "3.9"

services:
  web:
    image: nginx:latest
    ports:
      - "3000:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./public:/public
  php:
    build:
      context: .
      dockerfile: PHP.Dockerfile
    environment:
      APP_MODE: 'development'
    env_file:
      - 'dev.env'
    volumes:
      - ./app:/app
      - ./public:/public
      - ./php.conf:/usr/local/etc/php-fpm.d/zz-log.conf
  mysql:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: <pass here>
    env_file:
      - 'dev.env'
    volumes:
      - mysqldata:/var/lib/mysql
      - ./app:/app
    ports:
        - '3306:3306'
volumes:
  mysqldata: {}

我的php.conf 在 php 服务中映射为 /usr/local/etc/php-fpm.d/zz-log.conf 如下所示:

php_admin_value[error_log] = /app/php-error.log
php_admin_flag[log_errors] = on
catch_workers_output = yes

我的意图是使用 php error_log() 函数并将所有日志记录在php-error.log 中,这是卷app 中的一个文件。 现在,来自容器的所有日志仅显示在终端上。

我已经为此苦苦挣扎了几个小时,不知道如何继续。谢谢

【问题讨论】:

  • 您能否给我们提供更多信息,例如什么有效或无效?你能登录到文件吗?

标签: php docker error-logging


【解决方案1】:

我不知道你的源图片是什么。我假设一些 PHP 的官方 docker 镜像,比如https://hub.docker.com/_/php

所有容器化应用程序通常都配置为登录到stdout,因此您必须覆盖该行为。这真的是 PHP 特定的,我不是 PHP 专家。从您告诉我们的情况来看,您似乎知道如何覆盖该行为(通过使用一些 error_log() 函数和 php_admin_value[error_log] = /app/php-error.log 属性。

如果该行为被覆盖,您应该确保文件 app/php-error.log 存在于 PHP 容器内(即通过类似 docker exec -it my-container-id /bin/bash 的方式进入容器内,然后执行 ls /app/php-error.logcat /app/php-error.log 以查看文件是否存在已创建。

因为您将主机中的./app 目录挂载到容器中的/app 目录,所以您已经对它们进行了镜像。无论容器的/app 内有什么,您都可以在您的/path/to/docker/compose/app 目录中找到。您可以检查文件是否存在以及里面是否有一些内容。如果不是,您未能覆盖 PHP 记录到的默认行为。

【讨论】:

  • 一段时间后……完成了。容器php' directs errors to stderr [global] error_log = /proc/self/fd/2` 所以,我重写了指令,在 'php-fpm.conf.d' 目录中放置了一个名为 'zz-my.conf' [global] error_log = /app/php-error.log
猜你喜欢
  • 2019-10-17
  • 2012-05-17
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2020-11-18
相关资源
最近更新 更多