[SPRING] 도커가있는 스프링 부트가 요청 된 대상 오류에 대한 유효한 인증 경로를 찾을 수 없습니다.
SPRING도커가있는 스프링 부트가 요청 된 대상 오류에 대한 유효한 인증 경로를 찾을 수 없습니다.
나는 스프링 부트를 사용 중이며 Docker로 설정하려고합니다. 나는 Google에서 찾을 수있는 모든 것을 시도했지만 아무 것도 나를 보내지 않는 것 같습니다. 나는 뛰고있어
mvn clean package docker:build
이것을 실행하면 스프링 부트 테스트가 수행되고 DB 마이그레이션을 실행하고 JAR을 빌드 한 다음 Docker 이미지 작성과 관련하여 다음 오류가 발생합니다.
Failed to execute goal com.spotify:docker-maven-plugin:0.4.9:build (default-cli)
on project app: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target -> [Help 1]
다음은 사용중인 Dockerfile입니다.
FROM java:8-jdk
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/james/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
EXPOSE 8080
VOLUME /tmp
ADD app-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
그리고 여기에 내 docker-maven-plugin 설정이 있습니다 :
... pom stuff
<docker.image.prefix>jamesone1</docker.image.prefix>
... other pom stufff
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.9</version>
<configuration>
<dockerHost>https://192.168.99.100:2376</dockerHost>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
나는 dock을 mac 용으로 사용하고 있으며 docker-machine을 다음 env와 함께 사용하고 있습니다.
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/james/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
무슨 일이야?! 내가 놓친 게 있니?
해결법
-
==============================
1.Windows 10에서 이것을 수정 :
Windows 10에서 이것을 수정 :
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>yourImageName</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
다음 두 가지 태그가 중요합니다.
<dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
나는 dockerfile을 사용하는데,이 경로는이 태그로 정의해야한다.
<dockerDirectory>src/main/docker</dockerDirectory>
이제 다음을 통해 jar 파일을 만들고 docker 이미지를 생성 할 수 있습니다.
mvn 패키지 도커 : 빌드
나는 맥에서 다음과 같은 가치가 있다고 생각한다.
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
-
==============================
2.나는 플러그 접속 식없이 혼자서 고정물 이미지를 만드는 것을 끝내었다.
나는 플러그 접속 식없이 혼자서 고정물 이미지를 만드는 것을 끝내었다.
docker build -f Dockefile .
그리고 Dockefile (이름이 변경됨) :
FROM java:8-jdk EXPOSE 8080 #VOLUME /tmp ADD target/app-0.0.1-SNAPSHOT.jar /opt/demo/app-0.0.1-SNAPSHOT.jar CMD ["java","-jar","/opt/demo/app-0.0.1-SNAPSHOT.jar"]
다음과 같이 실행합니다.
docker run <container id here>
난 그냥 작동하도록 메이븐 플러그인을 얻을 수 없었다!
게다가 나는 물건을 훨씬 더 간단하게 만드는 docker-compose.yml을 만들었습니다 !!!
열려는 포트, dockerfile 위치와 같은 속성을 정의하고 docker-compose를 실행하면 마술로 docker 이미지를 작성 + 실행합니다!
사용중인 docker-compose.yml의 예 :
version: '2' services: web: build: . ports: - "8080:8080"
빌드는 Dockerfile 위치를 참조합니다. * 같은 위치에 있으려면 Dockerfile + yml 파일이 필요할 수도 있습니다!
포트는 내가 원하는 포트를 참조합니다. 이제 goto localhost : 8080을 사용하여 요청을 도커 컨테이너에 전달할 수 있습니다.
도커 컨테이너에 대한 자세한 내용은 다음을 참조하십시오.
https://docs.docker.com/compose/gettingstarted/
from https://stackoverflow.com/questions/39240560/spring-boot-with-docker-unable-to-find-valid-certification-path-to-requested-tar by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Flux <DataBuffer>의 압축을 해제하는 방법 (및 작성 방법) (0) | 2019.04.24 |
---|---|
[SPRING] @DataJpaTest로 Spring 테스트는 @Repository로 클래스를 autowire 할 수 없습니다 (하지만 인터페이스 저장소가 작동합니다!). (0) | 2019.04.24 |
[SPRING] Cloud API 게이트웨이에 대한 응답 본문에 데이터를 추가하는 방법 (0) | 2019.04.24 |
[SPRING] Dozer의 사용자 지정 변환기를 사용하여 개체 목록을 다른 목록에 매핑 (0) | 2019.04.24 |
[SPRING] 봄에 속성 파일로드 (0) | 2019.04.24 |