Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将docker日志配置为有条件地发送到CloudWatch?_Docker_Docker Compose - Fatal编程技术网

如何将docker日志配置为有条件地发送到CloudWatch?

如何将docker日志配置为有条件地发送到CloudWatch?,docker,docker-compose,Docker,Docker Compose,我在docker-compose.yml中有以下内容 web: image: my_web build: context: ./ dockerfile: web.docker container_name: my_web networks: - front ports: - "80:8080" volumes: - wwwlogs:/var/logs/www env_file:

我在docker-compose.yml中有以下内容

  web:
    image: my_web
    build:
      context: ./
      dockerfile: web.docker
    container_name: my_web
    networks:
      - front
    ports:
      - "80:8080"
    volumes:
      - wwwlogs:/var/logs/www
    env_file:
      - ${SERVICE_ENVIRONMENT}.env
    links:
      - revproxy
    logging:
      driver: awslogs
      options:
        awslogs-group: my-web-group
        awslogs-region: us-east-1
        awslogs-stream-prefix: my-web
这在生产中运行良好,并按预期将所有内容发送到CloudWatch。但是,当我想在本地使用相同的docker文件(不发送到AWS,只需登录到STDOUT/STDERR)和在登台(我想发送到不同的awslogs组/-前缀)时,我不清楚这应该如何工作


有什么想法吗?总的来说,我不喜欢在每个环境中都有单独的docker文件——重复的代码条目会增加遗漏或无法正确维护的可能性。但是Docker似乎限制了有条件地提供内容。

这是Docker的更多限制,您不能指定多个日志驱动程序。使用单个docker compose文件发送到多个目的地会更复杂,因为docker不支持该文件,但它是可行的

例如,您可以使用,并且您必须为启动一个单独的侧车容器。然后在您的配置上,您可以基于环境创建一个。您可以使用类似于的方式将dev路由称为'stdout',将prod路由称为'awslogs'


关于如何使用docker compose配置Fluentd的另一个示例。

创建一个shell脚本,该脚本将基于模板和一些基于环境的条件创建docker-compose.yml,然后它将运行docker compose。一般来说,对于这类场景,我们使用Ansible和chef等配置工具,它们根据不同的环境使用不同的值从模板创建文件。我将继续接受这一点,因为我认为这是正确的,我对docker非常失望。我想要在部署到不同的环境之前不被脚本修改的黄金配置文件,我觉得为一些我认为非常标准的用例包括一个侧车是不对的。也许这真的是对awslogs驱动程序的批评——它应该可以选择在非连接环境中运行并转储到file/stdout。无论如何,“您不能指定多个日志驱动程序”,我认为这是正确的答案。