2012-11-02 8 views
5

Aktuell mit playframework 2.0.2 und in meinem application.conf stellte ich die DB-Verbindung infoWie Konfiguration in verteilten playframework Anwendung ändern

db.default.url="jdbc:mysql://localhost:3306/test" 
db.default.driver=com.mysql.jdbc.Driver 
db.default.user=test 
db.default.pass=test 

Aber was ich möchte, ist wissen, wenn ich in meine Anwendung setzen Produktion mit "play clean update dist" und dann installieren Sie es vor Ort gibt es keine application.conf. Das bedeutet, dass ich die DB-Verbindung ändern muss, bevor ich den Code verteile? Gibt es eine Möglichkeit, die Db-Verbindung in einer Konfigurationsdatei zu ändern, nachdem Sie es verteilt haben?

Antwort

8

Wenn Sie play dist verwenden, werden die Konfigurationsdateien in eine JAR-Datei in der ZIP-Datei gepackt. Sie könnten eine conf/prod.conf Datei mit so etwas wie erstellen:

include "application.conf" 

db.default.url="jdbc:mysql://foo.com:3306/mydb" 
db.default.driver=com.mysql.jdbc.Driver 
db.default.user=foo 
db.default.pass=bar 

Dann, wenn Sie die Play-App starten Sie es sagen, die prod.conf-Datei zu verwenden, indem Sie:

start -Dconfig.resource=prod.conf 
+0

Das würde ein Verteilungspaket benötigen, das das Produktionspasswort enthält, nicht wahr? Wenn ich ein Prod-Passwort nicht in ein Artefakt einfügen kann, würde es funktionieren, "-Dconfig.resource = prod.conf -Ddb.default.pass = myBar" zu starten? – nemoo

+1

Ja, gute Klarstellung. Die Config-Parameter können auch mit den Befehlszeilenarrays '-D' festgelegt werden. Oder Sie können '-Dconfig.file =/home/blah/prod.conf' verwenden, um zu vermeiden, dass die Datei' prod.conf' in das Artefakt eingefügt wird. –

4

Um zu vermeiden, die Datei config Verpackung auf allen I würde vorschlagen, dass Sie eine prod.conf auf den Produktionsservern erstellen und in einem anderen Ordner als dem Ordner speichern, in den Sie die verteilten Dateien dekomprimieren. Erstellen Sie dann ein Startskript wie unten (oder ein ausgefeilteres Startskript, das Ihre App als Dienst startet). Indem Sie die Konfigurationsdatei von Ihrem Paket fernhalten, vermeiden Sie das Risiko, es beim Übergeben neuer Änderungen versehentlich zu überschreiben.

#!/bin/bash 
sh start -Dconfig.file=/path/to/prod.conf & 
Verwandte Themen