はじめに
ちょっと Fluentd を使いたい用事ができたのでさくっとセットアップしようと思った。普通にセットアップするは面倒だったのでDocker Hubにあるイメージ から立ち上げようと思った。それならばあとで他のコンテナも使うかもしれないからDocker Composeで立ち上げれるようにしたら便利やん。と思っていい感じの docker-compose.yml
が書いてないか探したけどいまいち見つからない。
なので書いてみた。やったあとであんまり目的に会ってない気がしたが、せっかくなのでメモを残しておく。
docker-compose.yml
docker-compose.yml
version: "2"
services:
fluentd:
image: fluent/fluentd:latest
ports:
- "24224:24224"
environment:
- 'FLUENTD_CONF=fluentd.conf'
volumes:
- ./tmp/fluentd:/fluentd/log
- ./etc:/fluentd/etc
とりあえず fluentd.conf
は任意のものに変更したいので FLUENTD_CONF
で起動時にローカルのものをコピーするようにする。
ディレクトリ構成
etc
ディレクトリにfluentd.conf
を配置。 tmp
にfluentdのログのボリュームが置かれるようにする。
tree .
.
├── docker-compose.yml
├── etc
│ └── fluentd.conf
└── tmp
└── empty
起動する
docker-compose up -d
Creating network "fluentddockercompose_default" with the default driver
Pulling fluentd (fluent/fluentd:latest)...
(中略)
Status: Downloaded newer image for fluent/fluentd:latest
Creating fluentddockercompose_fluentd_1 ... done
接続してみる
docker exec -it fluentddockercompose_fluentd_1 /bin/sh
/ # ls
bin fluentd media root srv usr
dev home mnt run sys var
etc lib proc sbin tmp
fluentd.conf
をみてみる
# vi fluentd/etc/fluentd.conf
ローカルに配置したものになっていれば成功
まとめ
やったあとで気づいたがこういうのは最近はKubernetesでやるんだろうか。なのでDocker Composeでの設定が見つからなかったのか? 記述が簡単で手軽なのでDocker Composeは好きなんだけど。しかしまあ、ちゃんとシステム開発して運用のスケーラビリティを視野に入れたら最初からk8sでやっといたほうがいいんだろうなあ。今度からそうしよう。