5

Play 2.2 /Scala アプリケーション (SBT でビルド)について、デプロイ先の環境に応じて異なる構成ファイルをデプロイしたいと考えています (たとえば、デプロイメントを特定のデータベース サーバーと結合するため)。さまざまな展開ターゲットに対して、アプリケーションの構成ファイル (conf/application.conf) のさまざまなバリアントを作成するにはどうすればよいですか? ベース バージョンからバリアントを生成できるといいのですが。

私が .NET から慣れ親しんでいるのは、基本構成ファイル (Web.config) を用意することです。これは、展開するプロファイル (たとえば、運用) に応じて特定の変換を受けます。Play/Scala の世界で同様の手法を使用していますか?

4

1 に答える 1

18

代替構成ファイルは、セクション で Play のドキュメントで非常によくカバーされていますSpecifying alternative configuration file

つまりapplication.conf、アプリのデフォルト構成を配置し、さらに環境用に追加のファイルを作成する必要があります。life.confなどdev.conf。これらのファイルには、最初にインクルードする必要がありapplication.conf(デフォルト設定全体が読み込まれます)、次に変更する必要がある部分のみを上書きします-つまり. DB資格情報、次の可能性がありますdev.conf

include "application.conf"

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:alternative-database-for-dev-testing"
db.default.user=developer
db.default.password="developerpass"

最後に、アプリケーションを ( の後dist) 次のように起動します。

./start -Dconfig.resource=dev.conf

または Play コンソールで

play -Dconfig.resource=dev.conf run

いくつかのヒント:

  • 「ライフ」DB資格情報をデフォルトファイルに配置しないことをお勧めします.開発者がapplication.conf彼を含めるのを忘れた場合dev.conf、本番DBに損傷を与えることはありません.代わりにprod.conf.
  • また、これらの追加の構成は、VCS (つまり、git) リポジトリに配置しないでください。ターゲット マシンで直接作成する (およびリポジトリで無視する) と、life データベースの資格情報を知っているべきでない人には表示されません。それ。
  • リモートの代替構成ファイルを使用することもできます。これは便利です。同じアプリの複数のインスタンスを展開する場合。クラウド内のいくつかのホストで。
  • 各開発者は独自の構成ファイルdev_aknuds1.conf、つまりなどを持つことができるため、レポdev_biesior.confの1つのパターンでそれらを無視できます。dev_*.conf
  • start_dev.sh最後に、シェル スクリプト (unix) またはバット ファイル (Windows) を作成して、などの選択した構成ファイルの使用を開始できるため、毎回run_dev.sh書き込む必要はありません。-Dconfig.resource=...
于 2014-02-18T22:30:44.523 に答える