2017-12-16 13 views
0

제발 내 문제를 해결하는 데 도움이됩니다.jar에 대한 절대 경로가없는 새 스프링 부팅 JAR을 사용하여 컨테이너를 다시 시작하려면 어떻게해야합니까?

도커를 업그레이드하면 절대 경로가있는 컨테이너에 jar를 추가 할 필요가 없습니다. 만드는 방법, 컨테이너를 다시 시작할 때 새로운 항아리가 집어 들었습니까? Dockerfile에서 새 항아리의 절대 경로를 지정할 수 없기 때문에 새 항아리를 만들고 컨테이너를 다시 시작 했으므로 이제는이 작업을 수행 할 수 없습니까?

다음은 Docker의 새 버전으로 업데이트하기 전에 작동 한 Dockerfile입니다. 그에게서 나는 문제없이 이미지를 만들었습니다.

FROM java:8 

VOLUME /tmp 
EXPOSE 8888 
ADD /home/jdev/docker-storage/jenkins/workspace/CA/build/libs/ca.jar /app.jar 
RUN bash -c 'touch /app.jar' 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 

이제 상대 경로를 지정해야하므로 이미지를 만들 수 없습니다. 다시 시작한 후에는 새 이미지가 Docker 컨테이너에 복사되지 않습니다. Dockerfile은/home/jdev에 있습니다. 도움을

ADD docker-storage/jenkins/workspace/CA/build/libs/ca.jar /app.jar

감사합니다!

답변

0

Docker 컨테이너는 변경 불가능한 컨테이너로 취급해야합니다. 이 접근법을 사용할 때 겪고있는 대부분의 문제는 사라질 것입니다.

이 설정은 최근 나에게 상당히 도움이되었습니다. Maven을 사용하고 있는지 확실하지 않습니다. 이것은 Maven 기반의 솔루션입니다.

먼저 프로젝트 루트에 docker 디렉토리를 만듭니다.

새 디렉토리에이 Dockerfile 추가

FROM java:8u111-jdk-alpine 

COPY *.jar target/@[email protected]@[email protected] 

CMD java -Xmx512m -jar target/@[email protected]@[email protected] 

구성 메이븐 새로운 docker 디렉토리로 작업하고 Dockerfile

이 (가) pom.xml

  <resource> 
      <directory>${project.basedir}/docker</directory> 
      <filtering>true</filtering> 
      <targetPath>..</targetPath> 
     </resource> 
에 다음을 추가합니다 (필요한 특정 설정을 포함)

이제 프로젝트를 패키지하면 올바른 폴더 내의