[英]h2 database in PostgreSQL mode does not accept PostgreSQL SQL syntax
[英]Play Framework: use h2 database for development and postgresql in production mode and how to connect to the postgresql via conf-file
我有以下 prod.conf,其中包含有关如何连接到我的 PostgresSql 数据库的相关信息。
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
配置。
我没有收到无法找到/加载prod.conf
或无法建立与数据库的连接的任何警告。
解决此问题的正确方法是什么,我的 db-url 是否正确?
作为一点上下文,postgresql db 作为 docker 镜像以及 play-applications 运行。 机器人在同一个网络中。
-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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.