Docker-compose:如何启动容器输出抑制

我有一个docker-compose文件,在其他几个文件夹中,一个couchdb容器( https://hub.docker.com/r/klaemo/couchdb/ ); 当我做docker-up时,couchdb容器会输出大量的输出。 有没有办法抑制输出,所以我只看到其他容器的输出?

也许

  1. 我可以以某种方式在守护进程模式下运行couchdb?

要么

  1. 我可以重写默认命令以及redirect输出到一个tmp文件?

我不知道如何做任何两个,我想在撰写文件本身,而不是通过改变我的撰写文件callup命令。 任何帮助?

这是最小的撰写文件:

couchdb: container_name: couchdb image: klaemo/couchdb:2.0.0 ports: - "5984:5984" 

我从makefile中调用: docker-compose up --abort-on-container-exit --force-recreate && docker-compose down

请注意,由于某种原因,Docker容器会logging到stdout和stderr。 它允许一个统一的日志界面,像docker logs命令使用和logging驱动程序从容器中获取信息。 在一个大型的集装箱生态系统中,如果一切都一样的话,那就更容易了。

运行

在运行时有几个选项。

  1. 你可以背景couchdb容器,并在前台启动其他人。

     docker-compose up -d couchdb docker-compose up other container names 
  2. 您可以在后台启动一切,只查看特定容器的日志

     docker-compose start # or docker-compose up -d docker-compose logs -f other container names 

build立时间

要永久修改日志logging,您可以在映像构build中更改CouchDB的日志configuration

 couchdb: container_name: couchdb image: me/klaemo-couchdb:2.0.0 build: context: . dockerfile: Dockerfile.couchdb ports: - "5984:5984" 

Dockerfile.couchdb

 FROM klaemo/couchdb:2.0.0 COPY couchdb.ini /opt/couchdb/etc/local.ini 

couchdb.ini需要包含容器/opt/couchdb/etc/local.ini所有原始configuration设置,将一些日志设置从stderr更新到一个文件中:

 [log] file = /opt/couchdb/log/couch.log level = info 

您还可以专门为模块设置日志级别

 [log_level_by_module] couch_httpd = info couch_replicator = info couch_query_servers = error 

您可能希望从容器主机将/opt/couchdb/log目录挂载为一个卷,这样就不会始终将数据写入当前容器实例。