我在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)以及暂存时(我想发送到不同的AWS日志),这应该如何工作-group /-前缀)。
有什么想法吗?通常,我不喜欢为每个环境使用单独的docker文件-重复输入代码会增加某些东西会丢失或维护不正确的可能性。但是Docker似乎有条件供应事物的能力有限。
答案 0 :(得分:1)
更多在docker中的限制是您不能指定多个日志记录驱动程序。用一个docker-compose文件发送到多个目的地会更加复杂,因为docker不支持,但是它是可行的。
例如,您可以使用Fluentd logging driver,并且必须为Fluentd启动一个单独的sidecar容器。然后,在您的配置上,您可以根据环境创建一个routing rule。您可以使用fluentd CloudWatch logs plugin之类的东西说dev路由到“ stdout”,而prod路由到“ awslogs”。
This is另一个有关如何使用docker-compose配置Fluentd的示例。