[Docker] 도커에서 jar 파일 실행

Posted by 김성철

Docker - 도커에서 jar 파일 실행

참고링크 :  
	https://ssyoni.tistory.com/m/22  

jar 파일 생성

이클립스나 인텔리J에서 실행할 jar 파일 생성  
	* 그래들일 경우에는 bootjar 더블클릭하면 build 폴더에 jar파일 생김  

Dockerfile 파일 생성

경로 : C:₩Users₩sung₩Desktop₩Dcoker  
파일명 : Dockerfile  
======================================================================================================  
FROM openjdk:8-jdk-alpine  
ARG JAR_FILE=stock-0.0.1-SNAPSHOT.jar  
COPY ${JAR_FILE} myboot.jar  
ENTRYPOINT ["java","-jar","/myboot.jar"]  
======================================================================================================  
  
FROM 이미지를 생성할 때 사용할 기반 이미지입니다. openjdk:8-jdk-alpine 이미지에서 레이어를 생성합니다.  
ARG 변수 선언  
COPY 실행할 jar파일을 도커 컨테이너 내부에 myboot.jar라는 이름으로 복사합니다. 상대 경로로 위치도 같이 설정 가능합니다.  
ENTRYPOINT 컨테이너가 시작될 때 실행할 스크립트 혹은 명령을 정의합니다.  

이미지 빌드

======================================================================================================  
docker build -t stock .  
======================================================================================================  
  
-t : 특정 이름으로 이미지를 빌드한다는 의미의 옵션입니다.  
. : Dockerfile의 경로를 나타냅니다. 현재는 빌드 명령어가 dockerfile와 같은 경로에서 실행되기 때문에 (.)으로 작성하였습니다.  

이미지 생성 확인

======================================================================================================  
docker images  
======================================================================================================  
  
======================================================================================================  
PS C:₩Users₩sung₩Desktop₩Dcoker> docker images  
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE  
stock        latest    f22be1f86131   14 seconds ago   148MB  
======================================================================================================  

컨테이너 실행

======================================================================================================  
docker run -it -p 9090:80 --name test stock  
======================================================================================================  
  
-p <external_host_port> : <container_host_port> : 호스트의 포트를 노출된 컨테이너 포트에 명시적으로 매핑하는 옵션입니다.  
로컬의 9090 포트와 컨테이너의 80 포트를 매핑합니다.