如何解决Play框架:在生产模式下使用h2数据库进行开发和postgresql,以及如何通过conf文件连接到postgresql
我有以下prod.conf,其中包含有关如何连接到我的Postgressql DB的相关信息。
slick.dbs.default {
profile = "slick.jdbc.PostgresProfile$"
db.dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"
db.numThreads = 8
maxConnections = 8
driver="slick.jdbc.PostgresProfile$"
db.driver="org.postgresql.Driver"
url="jdbc:postgresql://db:5432/db"
user="user"
password="password"
}
(摘录)
我的Dockerfile看起来像这样
#...
RUN sbt stage
RUN cd target/universal/stage/bin
ENTRYPOINT ["target/universal/stage/bin/newsapi","-dplay.http.secret.key=KEY -Dconfig.resource=prod.conf"]
(摘录)
有了-Dconfig.resource=prod.conf
,应用程序应该开始使用prod.conf
而不是application.conf
,对吧?
但是在部署应用程序时,它仍然使用h2数据库,该数据库不是prod.conf
的一部分,而是在application.conf
中进行配置。
我没有收到任何警告,提示找不到{/ {1}} /无法加载{db1},或者无法建立与数据库的连接。
作为上下文,postgresql db和docker-play应用程序一样作为docker映像运行。 Bot在同一个网络中。
解决方法
-Dconfig.resource
标志需要传递给JVM,但是您将其传递给应用程序。
如果您使用的是sbt-native-packager(Play默认使用),则应该可以通过在-J前缀之前将标志传递给JVM。因此,您需要通过-J-Dconfig.resource=prod.conf
。
以下是相关文档: https://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/customize.html#via-build-sbt
顺便说一下,还有一个sbt-native-packager的Docker插件。 https://www.scala-sbt.org/sbt-native-packager/formats/docker.html 我建议您使用它,而不是手动编写Dockerfile。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。