開発環境
「Terasoluna Web Server」というフレームワークを使って、Webシステムを開発しています。
- Java8
- Tomcat8
- Terasoluna Server Framework for Java WEB 2.0.6.2
- PostgreSQL 9.4
データベースの接続設定は、webapps/META-INF/context.xml
ファイルに書いています。
sql
1<!-- webapps/META-INF/context.xmlの中身 --> 2 3<Context> 4 <Resource 5 name="jdbc/SampleDataSource" 6 type="javax.sql.DataSource" 7 driverClassName="org.postgresql.Driver" 8 username="postgres" 9 password="password" 10 url="jdbc:postgresql://127.0.0.1:5432/sampledb" 11 maxIdle="2" 12 maxWait="5000" 13 maxActive="4"/> 14</Context>
データベースのパスワードは、ローカル環境、テスト環境、本番環境でそれぞれ異なります。
データベースのパスワードに対する扱い
各環境に対応するGitのブランチを作成して、各環境によるパスワードの違いをGitのブランチで吸収しています。
これにより、「デプロイするたびに、手動でファイルを修正する」という作業がなくなります。
ただし、以下の問題もあります。
- すべてのメンバーに対して、データベース環境が同じとは限らない(できるだけ揃えてはいる)ので、個別にcontext.xmlを修正するときがある。
- 間違えてコミットしたことにより、「テスト環境用ブランチなのに、ローカル環境のパスワードが記入されている」ことがある。
質問
上記の問題を解決する方法があれば、教えていただきたいです。
「パスワードを環境変数に設定する」方法も思いつきました(下記サイト参考)が、context.xmlで環境変数を参照する方法が分かりませんでした。
http://qiita.com/ka_/items/a19f65628bdc213fc8f5
※そもそも「環境変数にパスワードを保存する」のは「あり」なのでしょうか?
また、皆さんは、「データベースのパスワードをどこで定義しているのか」、差支えなければ教えてください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/28 13:42