アンカー/エイリアス記法を使ってcompose.ymlでawslogsのロギング設定を使い回す
仮想マシン内のログはなるべくAmazon CloudWatchに投げる
インスタンス内はステートレスに保つのがセオリー
DockerのServiceのログもAmazon CloudWatchに投げる DockerのAmazon CloudWatch用のロギングドライバを使う
複数のServiceで同じことを記載しないといけないので、共通化したい
基本的に異なるのはawslogs-streamのオプションだけ
YAMLのアンカー/エイリアス記法を使う
一部抜粋
code:compose.yml
x-var-logging: &LOGGING
driver: awslogs
options: &LOGGING_OPTIONS
awslogs-region: ap-northeast-1
awslogs-group: /aws/ec2/instance/prd-hoge/docker/example.com
services:
web:
image: nginx:latest
logging:
<<: *LOGGING
options:
<<: *LOGGING_OPTIONS
awslogs-stream: web
wp:
image: wordpress:latest
logging:
<<: *LOGGING
options:
<<: *LOGGING_OPTIONS
awslogs-stream: wp
db:
image: mariadb:latest
logging:
<<: *LOGGING
options:
<<: *LOGGING_OPTIONS
awslogs-stream: db
ポイント
親要素と子要素の両方にアンカーを張って、必要なところに追記
入れ子になっている子要素の一部だけ書き換えることは無理そう
コード量としてはさほど減っていないけど、共通値の修正ミスなどは防げるのでこういう書き方にしたほうがいい