繁体   English   中英

Play 框架:使用 h2 数据库进行开发,生产模式下使用 postgresql 以及如何通过 conf-file 连接到 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 ,对吧?

但是当应用程序被部署时,它仍然使用一个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM