docker 中的 truststore 问题路径与 spring boot 和 kafka

Dar*_*ion 1 apache-kafka docker spring-boot spring-kafka

我在使用 docker 容器部署我的应用程序 spring 启动应用程序时遇到技术问题。

org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: 无法加载 SSL 密钥库 /tmp/tomcat-docbase.4737956707529585395.8080/deployments/app/certs/kafka.truststore.jks

/deployments 是我在 dockerfile 中配置的工作目录

我发现它选择 tmp/tomcat docbase 很奇怪,因为在为其他信任库配置时,它进入了正确的位置。这是我的 application.yaml 里面的内容

spring:
   kafka:
     bootstrap-servers:localhost:9092
     ssl:
       truststore-location: /deployments/app/certs/kafka-truststore.jks
       truststore-password: test
     consumer:
      group-id: consumerid
server:
   ssl:
    enabled: false
    key-store: /deployments/app/certs/dp--dev.jks
    key-store-password: changeit
    trust-store: /deployments/app/certs/ol-truststore-dev.jks
    trust-store-password: test
Run Code Online (Sandbox Code Playgroud)

它是我遗漏的东西还是与我正在使用的 kafka springframework lib 有关?

Gar*_*ell 7

truststore-location 是 Spring Resourceclasspath:默认情况下),因此它会在类路径上查找文件。引导检查文件是否存在,所以我看不到它是如何通过引导而没有错误并传递给 Kafka(除非它也在类路径上)。如果 Boot 觉得没问题,Kafka 也应该如此。

尝试 file:/deployments/app/certs/kafka-truststore.jks