2017-09-03 159 views
0

我有一个Spring Boot Java应用程序,我想在Docker容器中运行它。该应用程序与通过HTTPS内部网络上的其他服务进行通信,但是当我运行的泊坞容器,我得到下面的异常(通过HTTPS连接的原因):在Docker Toolbox中运行Java应用程序时出现SunCertPathBuilderException

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

我有我的dev的机器相同的异常为好吧,我使用this tutorial固定。

我试过

  • 许多意见指出,DOCKER_CERT_PATH变量一定要设置正确,但是当我运行docker-machine env default,我看到它指出C:\Users\username\.docker\machines\machine\default
  • 我试图拿到证书,并使用把它放到这个文件夹this advice
  • 我尝试添加-Dtrust_all_cert=true Java的选项来禁用证书检查
  • 我试图从org.spotify.dockerfile-maven-plugin切换到org.spotify.docker-maven-pluginthis settings
  • 我跟着this tutorial和设法在Docker镜像中添加证书/etc/ssl/certs/java/cacerts以及/usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts

这些解决方案都不奏效,不幸的是,

我的问题

我应该怎么做才能摆脱这种异常?

我Dockerfile(之后将以前的解决方案)

FROM openjdk:8-jdk-alpine 
# to enable file writes 
VOLUME /tmp 
ADD target/trip-force-0.1.0.jar app.jar 

# java cacerts 
COPY ./res/timur.domain.local.cer /timur.domain.local.cer 
ENV CACERTS /etc/ssl/certs/java/cacerts 
RUN keytool -noprompt -import -alias timur -keystore ${CACERTS} -file /timur.domain.local.cer 

ENV JAVA_OPTS="-Dtrust_all_cert=true" 
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

回答

0

什么最后的伎俩是解决办法,我可能应该在开始的时候都试过了,因为它是什么固定在我的开发问题机。

使用this tutorial(和下载从here的InstallCert.java文件)我只是复制所生成的文件jssecacerts利用在Dockerfile此命令的图像泊坞内:

COPY ./res/jssecacerts /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ 
相关问题