2017-09-03 1 views
0

Docker 컨테이너에서 실행하려는 Spring Boot Java 응용 프로그램이 있습니다. 이 응용 프로그램은 HTTPS를 통해 내부 네트워크에있는 다른 서비스와 통신,하지만 난 도커 컨테이너를 실행할 때, 나는 (HTTPS 연결에 의한 원인) 다음과 같은 예외를 얻을 :Docker Toolbox에서 Java 응용 프로그램을 실행할 때 SunCertPathBuilderException이 발생했습니다.

내 dev에 컴퓨터에 같은 예외로했다
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

음, this tutorial을 사용하여 수정했습니다.

나는

  • 많은 조언이 DOCKER_CERT_PATH 변수가 올바르게 설정 될 필요가 있다고 지적했습니다 무엇, 그러나 나는 docker-machine env default를 실행할 때, 나는 그것이 C:\Users\username\.docker\machines\machine\default 지적을 참조하십시오.
  • 내가 인증서를 얻고 사용하여이 폴더에 넣어 노력 this advice
  • 나는 내가 this tutorial를 따라 this settings
  • org.spotify.docker-maven-pluginorg.spotify.dockerfile-maven-plugin 전환을 시도 인증서 확인을
  • 을 사용하지 -Dtrust_all_cert=true 자바 옵션을 추가 시도 Docker 이미지에서 /etc/ssl/certs/java/cacerts/usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts에 인증서를 추가 할 수있었습니다.

이러한 솔루션 중 어느 것도 효과가 없지만 불행합니다.

내 질문

이 예외를 제거하기 위해 어떻게해야합니까?

내 Dockerfile (후 이전 솔루션을 적용) 마침내 내 dev에에 문제를 해결 것이었다으로 트릭, 나는 가능성이 처음으로 시도해야, 솔루션이었다 무슨 짓을

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 파일을 다운로드) 난 그냥 Dockerfile에서이 명령을 사용하여 도커 이미지 내부에 생성 된 jssecacerts 파일 복사 :

COPY ./res/jssecacerts /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ 
관련 문제