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-plugin
에org.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" ]