【问题标题】:How to reduce mongo log verbosity in a docker-compose image?如何减少 docker-compose 图像中的 mongo 日志详细程度?
【发布时间】:2019-02-14 17:01:43
【问题描述】:
我在一个更大的服务器中运行 MongoDB,由 docker-compose 控制。
我想减少 Mongo 日志的详细程度(并且可能最终也控制其他 Mongo 设置)。不确定将其放入我的最小配置中的哪个位置;我目前只有:
mongo:
image: mongo:3.2
volumes:
- ${MONGO_DATA_DB}:/data/db
ports:
- ${EXPOSED_MONGO_PORT}:27017
【问题讨论】:
标签:
mongodb
logging
docker-compose
【解决方案1】:
我已经尝试了接受的答案,但 mongo 日志仍然很冗长。然后,在this thread 之后,我省略了整个日志,这在我的情况下要好得多:
mongo:
command: mongod --quiet --logpath /dev/null
【解决方案2】:
阅读 DockerHub 上 MongoDB 的 official image 的描述(您正在使用相同的图像)我推断您可以使用 command 部分将命令传递给 mongod码头工人撰写。然后您可以使用--quiet 选项来限制输出量。
这样你的 docker-compose 会如下:
mongo:
image: mongo:3.2
volumes:
- ${MONGO_DATA_DB}:/data/db
ports:
- ${EXPOSED_MONGO_PORT}:27017
command: --quiet
您可以找到 mongod 接受 here 的选项的完整列表,也可以在 bash 中查看 mongod 的 --help 输出。
有时 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
【解决方案3】:
设置日志路径对我有用。它不显示日志输出,而是保存到文件中。
mongo:
container_name: mongo
image: mongo
restart: unless-stopped
command:
- '--logpath'
- '/var/log/mongodb/mongod.log'
ports:
- '27017:27017'