【问题标题】:DB driver is not found when running in docker swarm在 docker swarm 中运行时找不到 DB 驱动程序
【发布时间】:2021-11-22 11:03:59
【问题描述】:

我有一个使用 maven 运行的 Spring Boot 应用程序。我可以在本地成功运行我的应用程序,但是当我在本地 docker swarm 中运行图像时:docker stack deploy --compose-file docker-compose.yml compose 我收到以下错误:Caused by: java.lang.IllegalStateException: Cannot load driver class: org.postgresql.Driver

我检查了 env.getPropertySources():

compose_service@debian| spring.datasource.driver-class-name=org.postgresql.Driver
compose_service@debian| spring.datasource.url=jdbc:postgresql://localhost:5432/service
compose_service@debian| spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

这些道具适用于本地运行。 我检查过,构建的 jar 包含 Postgres 库;我项目中的 maven 依赖项:

<dependency>
   <groupId>org.postgresql</groupId>
   <artifactId>postgresql</artifactId>
   <version>42.3.1</version>
</dependency>

我最近使用docker-compose up 运行了该应用程序,它也可以运行,所以在 swarm 中运行似乎是个问题。有什么想法吗?

【问题讨论】:

  • 你是否在 application.properties 中添加了这个属性 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect?
  • @mystery 是的,它就在这里。请查看我的帖子,道具样本已经在那里

标签: java spring postgresql docker-compose


【解决方案1】:

我不应该通过echo 向 docker swarm 添加秘密, 它将 \n 添加到每个字符串(这就是我的驱动程序名称无效的原因)。

相反,我应该使用 printf:

printf "org.postgresql.Driver" | docker secret create db-driver -

希望它能为某人节省时间

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2021-08-24
    • 2019-11-07
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多