【发布时间】:2018-12-14 10:55:54
【问题描述】:
我正在尝试使用 Kafka 客户端设置 Spring Boot 应用程序以使用 SSL。 因为这个原因,我将 keystore.jks 和 truststore.jks 存储在文件系统(在 docker 容器上):https://github.com/spring-projects/spring-kafka/issues/710
这是我的 application.yml:
spring:
kafka:
ssl:
key-password: pass
keystore-location: /tmp/kafka.client.keystore.jks
keystore-password: pass
truststore-location: /tmp/kafka.client.truststore.jks
truststore-password: pass
但是当我启动应用程序(在 docker 容器中)时,它会说:
Caused by: java.lang.IllegalStateException: Resource 'class path resource [tmp/kafka.client.keystore.jks]' must be on a file system
[..]
Caused by: java.io.FileNotFoundException: class path resource [tmp/kafka.client.keystore.jks] cannot be resolved to URL because it does not exist
我检查了容器,.jks 在 /tmp 中。
我无法理解如何将 .jks 传递给 spring boot。
更新 06/07/2018
这是我的 dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ssl/kafka.client.keystore.jks /tmp
COPY ssl/kafka.client.truststore.jks /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
【问题讨论】:
-
试试这个格式 keystore-location: ./tmp/kafka.client.keystore.jks 这应该可以工作
-
如果您有问题@user,请告诉我
-
@Deadpool 对于您建议的格式,用户需要将密钥库和文件挂载到执行目录,父文件夹为 tmp。
标签: java spring docker spring-boot apache-kafka