Java Docker id未拾取文件

Java Docker id未拾取文件,java,spring-boot,docker,Java,Spring Boot,Docker,我有一个证书,试图将证书设置为“javax.net.ssl.keyStore” setProperty(“javax.net.ssl.keyStore”、“certs/certfile.p12”) setProperty(“javax.net.ssl.keystrepassword”、“password”) //(完全限定路径类似于src/main/resources/certs/certfile.p12) 当我在本地运行时,这些属性工作正常,但在docker conatiner中,问题是cer

我有一个证书,试图将证书设置为“javax.net.ssl.keyStore”

setProperty(“javax.net.ssl.keyStore”、“certs/certfile.p12”)
setProperty(“javax.net.ssl.keystrepassword”、“password”)

//(完全限定路径类似于src/main/resources/certs/certfile.p12)

当我在本地运行时,这些属性工作正常,但在docker conatiner中,问题是certs/certfile.p12中没有这样的文件或目录

我需要将certfile.p12添加到JAR中的javax.net.ssl.keyStore。 也接受其他解决方案

注意:完全限定路径在JAR中不起作用

提前感谢。

将配置保持在映像外部是一种很好的做法。除了提供明显的灵活性(一个映像具有许多可能的配置)之外,这还提供了一些外部管理配置(例如证书)的安全性(可能是安全的)

您有两种选择:

  • 创建|运行容器时,将
    certfile.p12
    装入卷:
  • 不推荐(参见前言),您可以在图像中包含
    certfile.p12
    。这需要您创建一个新映像(需要Dockerfile):
您的配置还需要设置
密码。这将是一个很好的做法,以外部化这一价值观的形象以及。一种方法是使用一个环境变量,然后您必须从Java应用程序中获取该变量。您可以设置变量:

docker run \
...
---env=PASSWORD=password
...

最好(尝试)将配置保持在映像外部。除了提供明显的灵活性(一个映像具有许多可能的配置)之外,这还提供了一些外部管理配置(例如证书)的安全性(可能是安全的)

您有两种选择:

  • 创建|运行容器时,将
    certfile.p12
    装入卷:
  • 不推荐(参见前言),您可以在图像中包含
    certfile.p12
    。这需要您创建一个新映像(需要Dockerfile):
您的配置还需要设置
密码。这将是一个很好的做法,以外部化这一价值观的形象以及。一种方法是使用一个环境变量,然后您必须从Java应用程序中获取该变量。您可以设置变量:

docker run \
...
---env=PASSWORD=password
...

你能提供你正在使用的映像吗?你使用什么命令来启动容器?我不是在启动容器,我是在尝试在更高的环境中部署。我可以提供错误的屏幕截图。下面是日志java.io.FileNotFoundException:file:/app.jar/BOOT-INF/classes/java.io.FileInputStream.open0(本机方法)中的tls/certfile.p12(没有这样的文件或目录)~[na:1.8.0_212]在java.io.FileInputStream.open(FileInputStream.java:195)~[na:1.8.0_212]在java.io.FileInputStream.(FileInputStream.java:138)~[na:1.8.0_212]在java.io.FileInputStream.(FileInputStream.java:93)~[na:1.8.0212]嗯,
certs/certfile.p12
文件是如何到达docker的?是否有在构建过程中装载或复制的文件夹?该文件夹是在开发过程中手动添加的,并且是jar的一部分。您能否提供您正在使用的映像以及您正在使用什么命令来启动容器?我不是在启动容器,我正在尝试在更高的环境中部署。我可以提供错误的屏幕截图。下面是日志java.io.FileNotFoundException:file:/app.jar/BOOT-INF/classes/java.io.FileInputStream.open0(本机方法)中的tls/certfile.p12(没有这样的文件或目录)~[na:1.8.0_212]在java.io.FileInputStream.open(FileInputStream.java:195)~[na:1.8.0_212]在java.io.FileInputStream.(FileInputStream.java:138)~[na:1.8.0_212]在java.io.FileInputStream.(FileInputStream.java:93)~[na:1.8.0212]嗯,
certs/certfile.p12
文件是如何到达docker的?是否有一个文件夹在构建过程中被装载或复制?该文件夹是在开发过程中手动添加的,并且是jar的一部分。
docker run \
...
---env=PASSWORD=password
...