Play Framework:使用h2数据库进行开发,在生产模式下使用postgresql以及如何通过配置文件连接到postgresql
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
,对吗?
但是当应用程序被部署时,它仍然使用不属于 prod.conf
并在 application.conf
.
中配置的 h2 数据库
我没有收到任何关于 prod.conf
不能 found/loaded 或无法建立数据库连接的警告。
解决这个问题的正确方法是什么?我的 db-url 是否正确?
作为上下文,postgresql 数据库作为 docker 图像以及播放应用程序运行。机器人在同一个网络中。
需要将 -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
我建议您使用它而不是手动编写 Docker 文件。
我有以下 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
,对吗?
但是当应用程序被部署时,它仍然使用不属于 prod.conf
并在 application.conf
.
我没有收到任何关于 prod.conf
不能 found/loaded 或无法建立数据库连接的警告。
解决这个问题的正确方法是什么?我的 db-url 是否正确?
作为上下文,postgresql 数据库作为 docker 图像以及播放应用程序运行。机器人在同一个网络中。
需要将 -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 我建议您使用它而不是手动编写 Docker 文件。