如何减少 docker-compose 图像中的 mongo 日志详细程度?

Dav*_*arb 7 logging mongodb docker-compose

我在一个更大的服务器中运行 MongoDB,由 docker-compose 控制。

我想减少 Mongo 日志的冗长(并且可能最终也控制其他 Mongo 设置)。不确定在哪里适合我的最小配置;我目前只有:

  mongo:
    image: mongo:3.2
    volumes:
      - ${MONGO_DATA_DB}:/data/db
    ports:
      - ${EXPOSED_MONGO_PORT}:27017
Run Code Online (Sandbox Code Playgroud)

Car*_*lio 10

我已经尝试了接受的答案,但 mongo log 仍然很冗长。然后,在此线程之后,我省略了整个日志,在我的情况下要好得多:

mongo:
    command: mongod --quiet --logpath /dev/null 
Run Code Online (Sandbox Code Playgroud)


Emi*_*tti 9

读取的描述正式图像的MongoDB在DockerHub(相同的图像使用的是)我推断可以传递的命令的mongod使用命令的搬运工-撰写的部分。然后您可以使用该--quiet选项来限制输出量。

通过这种方式,您 docker-compose 将如下所示:

mongo:
    image: mongo:3.2
    volumes:
      - ${MONGO_DATA_DB}:/data/db
    ports:
      - ${EXPOSED_MONGO_PORT}:27017
    command: --quiet
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到mongod接受的整个选项列表,也可以查看bash 中的输出。--helpmongod

有时 docker 图像,接受配置参数作为环境变量,因此您可以在运行时更改服务的配置。遗憾的是,我在此 docker 映像中找不到有关可用环境变量的任何官方信息,但我鼓励您继续调查此替代路径。

我希望它有帮助!

编辑

图像文档中的另一种方法:

对于更复杂的配置设置,您仍然可以使用 MongoDB 配置文件。mongod 默认不读取配置文件,因此需要指定带有配置文件路径的 --config 选项。通过从 mongo 创建自定义 Dockerfile 或将其从主机安装到容器,创建自定义配置文件并将其放入容器中。有关配置文件选项的完整列表,请参阅 MongoDB 手册。

例如,/my/custom/mongod.conf 是自定义配置文件的路径。然后像下面这样启动 MongoDB 容器:

$ docker run --name some-mongo -v /my/custom:/etc/mongo -d mongo --config /etc/mongo/mongod.conf

这样,您的 docker-compose 将如下所示:

mongo:
    image: mongo:3.2
    volumes:
      - ${MONGO_DATA_DB}:/data/db
      - ${MONGO_DATA_CONFIG}:/etc/mongo/
    ports:
      - ${EXPOSED_MONGO_PORT}:27017
    command: --config /etc/mongo/mongod.conf
Run Code Online (Sandbox Code Playgroud)


Has*_*tas 5

设置日志路径对我有用。它不显示日志输出,而是保存到文件中。

    mongo:
        container_name: mongo
        image: mongo
        restart: unless-stopped
        command: 
            - '--logpath'
            - '/var/log/mongodb/mongod.log'
        ports:
            - '27017:27017'
Run Code Online (Sandbox Code Playgroud)