我有一个泊坞文件,如下所示。
FROM docker.test.com/jdk/jdk1.8:latest
RUN mkdir -p /opt/test/emp
COPY application/emp-service.war /opt/test/emp/
ENV SERVER_SSL_TRUSTSTORE=/certs/cacert
ENV SERVER_SSL_KEYSTORE=/certs/emp-test.com.jks
CMD java -jar /opt/test/emp/emp-service.war --spring.config.location=file:/conf/application.properties -Dlogging.config=/conf/logback.xml
我应该有application.property,
server.ssl.keyStore = PATH / TO /密钥库
但是,我不想硬编码。因此,在这里有一些路径,并在运行docker时将其作为一个卷传递,如下所示。
docker run -v LOCAL_PATH / emp-test.com.jks:/certs/emp-test.com.jks 测试服务
但是,我仍然收到以下错误。
Caused by: java.lang.IllegalArgumentException: Resource location must not be null
at org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:131) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.configureSslKeyStore(JettyEmbeddedServletContainerFactory.java:301) ~[spring-boot-1.4.5.RELEASE.jar!/:1.4.5.RELEASE]
我在DockerFile中尝试使用-Dserver.ssl.keyStore,如下所示,但错误仍然相同。
CMD java -jar /opt/test/emp/emp-service.war --spring.config.location = file:/conf/application.properties -Dlogging.config = / conf / logback.xml -Dserver.ssl.keyStore = / certs / emp-test.com.jks
我错过了什么吗?
我知道,这可以通过Docker compose来完成。但我只想使用docker run运行。
答案 0 :(得分:0)
您可以使用泊坞窗文件中的VOLUME和docker文件的ENV将本地卷(具有ssl证书的卷)映射到容器,并传入与容器对应的位置。
答案 1 :(得分:0)
docker run -e "foo=bar" ....
允许您在容器内设置环境变量。然后,您的应用程序可以读取该env变量,如果未提供则失败。同样也适用于撰写,泊坞群和kubernetes。