sohatach's blog

http://github.com/soha

CloudBeesでDBへの接続情報を環境変数で渡すやり方

GitHub等でソースコードを公開する際に、git管理上のファイルとしてDB接続情報(uri,ユーザ名,パスワード)を記載したままコミットしてしまうと
DBへのアクセス情報が漏れてしまい、誰でもDBにアクセスできるようになってしまいます。
このような場合、git管理上のファイルに直接接続情報を記載するのではなく、デプロイ時の環境変数を接続情報として使用できるようにします。

以下、Play2.1の例です。(他の言語やフレームワークでもやり方は同じです)

conf/application.confに以下の記載をします。

db.url=${db.url}
db.driver=org.mysql.Driver
db.user=${db.user}
db.pass=${db.pass}

この状態で以下のコマンドによりデプロイすると、${db.url}などが変数展開され、動作時に指定した値に書き変わります。

bees app:deploy -a sampleapp -t play2 -P db.url="jdbc:mysql://dbserver/dbname" -P db.user="dbuser" -P db.pass="dbpass" dist/sampleapp-1.0.zip

ここで

sampleappは、アプリ名
dbserverは、DBサーバ名またはIPアドレス
dbnameは、データベース名
dbuserは、データベース接続ユーザ名
dbpassは、データベース接続パスワード

となっています。
(-t play2 は、play2アプリであるとの指定)

上記は、CloudBeesでの例ですが、Herokuなどでも同じように環境変数で値を設定することができます。


参考
http://developer.cloudbees.com/bin/view/RUN/Configuration+Parameters
http://wiki.cloudbees.com/bin/view/RUN/CloudBeesWebXml