使用 docker-compose 在 postgresql 中启用日志记录

cor*_*rvo 6 postgresql logging docker docker-compose

我在我的 docker-compose 文件中使用 Postgres 作为服务。我希望在执行此操作时启用日志记录到日志文件docker-compose up。启用日志记录的一种方法是编辑postgres.conf文件,但在这种情况下它没有用。另一种方法是做这样的事情

docker run --name postgresql -itd --restart always sameersbn/postgresql:10-2 -c logging_collector=on

但这也没什么用,因为我不是从图像启动它,而是将其作为 docker-compose 服务启动。知道如何在 Postgres 中启用日志记录的情况下启动 docker-compose 吗?

Jin*_*alu 6

-c这是在 compose 中运行命令的 docker-compose

          version: '3.6'
          services:
            postgresql:
              image: postgres:11.5
              container_name: platops_postgres
              volumes: ['platops-data:/var/lib/postgresql/data/', 'postgress-logs:/var/log/postgresql/']
              command: ["postgres", "-c", "logging_collector=on", "-c", "log_directory=/logs", "-c", "log_filename=postgresql.log", "-c", "log_statement=all"]
              environment:
                - POSTGRES_USER=postgresql
                - POSTGRES_PASSWORD=postgresql
              ports: ['5432:5432']
          volumes:
            platops-data: {}
              # uncomment and set the path of the folder to maintain persistancy
              # data-postgresql:
              # driver: local
              # driver_opts:
              #   o: bind
              #   type: none
              #   device: /path/of/db/postgres/data/
            postgress-logs: {}
              # uncomment and set the path of the folder to maintain persistancy
              # data-postgresql:
              # driver: local
              # driver_opts:
              #   o: bind
              #   type: none
              #   device: /path/of/db/postgres/logs/
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,您可以查看container/postgress

  • 我必须把 `["postgres", "-c", "logging_collector=on", "-c", "log_directory=/logs", "-c", "log_filename=postgresql.log", "-c" , "log_statement=all"]` 在 docker-compose yaml 3.6 版本的括号中 (4认同)

lam*_*mth 5

  • 就像您使用 docker run 命令一样:
docker run --name postgresql -itd --restart always sameersbn/postgresql:10-2 -c logging_collector=on
Run Code Online (Sandbox Code Playgroud)

您添加-c logging_collector=on参数以ENTRYPOINT ["/sbin/entrypoint.sh"]启用日志记录。(Dockerfile)。

  • docker-compose.ymlcommand:文件中,像这样使用:
docker run --name postgresql -itd --restart always sameersbn/postgresql:10-2 -c logging_collector=on
Run Code Online (Sandbox Code Playgroud)

当Postgresql容器运行时,它将运行命令:/sbin/entrypoint.sh -c logging_collector=on