この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
今回はちょっと脱線して SentryというサービスをDocker上で実行してみます。
なお、Sentryはアプリケーションのログを収集して見やすくしてくれるサービスです。
https://getsentry.com/welcome/
SaaS型とオンプレ型が無償で提供されています。
sentry のオフィシャルイメージが用意されていますので、そちらを使います。
https://hub.docker.com/_/sentry/
基本的にこの手順に従っていくだけです。
事前準備: redisとPostgreSQLを起動
これもコンテナで起動します。
$ docker run -d --name sentry-redis redis
$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=sentry -e POSTGRES_USER=sentry postgres
シークレットキーの作成
シークレットキーを出力します。
コンテナの起動時に使いますので覚えておいてください。
$ docker run --rm sentry generate-secret-key
hogehogesecretkey
データベースの作成
$ docker run -it --rm -e SENTRY_SECRET_KEY='hogehogesecretkey' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
途中で「ユーザを作るか?」ときかれますので、作っておきましょ。
linkオプションについて
docker run コマンドで –link というオプションが使われています。
これはコンテナ同士を通信させる簡単な方法です。
リンクしたコンテナの情報(IPなど)を共有して参照できるようにします。 –link コンテナ名(:エイリアス) で指定します。
sentryのコンテナ中でエイリアス(postresやredis)を使って参照(REDIS_PORT_6379_TCP_ADDRなど) しているので、上記の通りに指定しないと動きません。
サーバの起動
$ docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='hogehogesecretkey' --link sentry-redis:redis --link sentry-postgres:postgres sentry
ホストの9000版アドレスにポートフォワードしてるので、http://localhost:9000 や http://192.168.33.11:9000 のようにしてブラウザから確認できます。
ワーカーの起動
デフォルトの設定で、workerのコンテナも必要なようなので起動しておきます。
$ docker run -d –name sentry-celery-beat -e SENTRY_SECRET_KEY=’hogehogesecretkey’ –link sentry-postgres:postgres –link sentry-redis:redis sentry celery beat $ docker run -d –name sentry-celery1 -e SENTRY_SECRET_KEY=’hogehogesecretkey’ –link sentry-postgres:postgres –link sentry-redis:redis sentry celery worker