背景
CI でのテスト実行時に Redis が動作する環境を用意したい.
Redis は AWS ElastiCache で動作している.
ElastiCache はデフォルトでは許可された AWS 内のセキュリティグループからのみアクセス可能で, public アクセス可能にするには NAT インスタンス作ったりする必要がある.
wercker.yml に services セクションを追加する
services: - redis
他には mongo
, elasticsearch
などが使える.
追加される環境変数
redis service を追加すると以下の環境変数が追加される.
REDIS_PORT REDIS_NAME REDIS_PORT_6379_TCP_ADDR REDIS_PORT_6379_TCP REDIS_ENV_REDIS_DOWNLOAD_URL REDIS_PORT_6379_TCP_PORT REDIS_ENV_REDIS_DOWNLOAD_SHA REDIS_ENV_GOSU_VERSION REDIS_ENV_REDIS_VERSION
重要なのが REDIS_PORT_6379_TCP_ADDR
で, 実行環境の Redis の接続先として設定する
const redisHost = process.env.REDIS_PORT_6379_TCP_ADDR || process.env.REDIS_HOST;
注意点
wercker 公式にある DockerHub(sutoiku/redis) を引用する方法だと, Redis 関連の環境変数が設定されず上記設定は使えないので注意.