Docker-compose:如何启动具有压缩输出的容器

时间:2017-02-10 21:24:11

标签: docker docker-compose

我有一个docker-compose文件,其中包括一个couchdb容器(https://hub.docker.com/r/klaemo/couchdb/);当我做docker-compose时,couchdb容器会输出很多输出。有没有办法抑制输出,所以我只看到其他容器'输出?

也许

  1. 我可以以某种方式在守护进程模式下运行couchdb吗?
    1. 我可以以某种方式覆盖默认命令并将输出重定向到tmp文件?
    2. 我不知道怎么做这两个中的任何一个,我想在compose文件本身内做,而不是通过更改我的compose file 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

1 个答案:

答案 0 :(得分:2)

请注意,Docker容器由于某种原因登录到stdout和stderr。它允许使用docker logs等命令的一致日志界面,并允许logging drivers从容器中获取信息。在大型集装箱生态系统中,如果一切工作都相同,则更容易。

运行

在运行时,有几个选项。

  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
    
  3. 构建时间

    要永久修改日志记录,您可以在图像构建中更改CouchDB的日志配置

    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中的所有原始配置设置,将一些日志设置从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目录作为卷从容器主机挂载,这样您就不会一直将数据写入当前容器实例。