도커에 스프링 부트 서비스 배포
## spring boot service를 도커에 배포 하기
- 간단한 프로젝트 예(server : 8080)
- 프로젝트 루트에 Dockerfile생성
FROM frolvlad/alpine-oraclejdk8
도커에게 alpine-oraclejdk8 버전을 기반 이미지로 해서 도커 이미지를 만들라고 알려준다.
frolvlad는 alpine-oraclejdk8 이미지가 저장된 저장소를 의미한다.
alpine-oraclejdk8 이미지는 알파인 리눅스와 오라클 jdk8로 만들어진 도커이미지다.
이 이미지를 기반 이미지로 사용하면 직접 자바 라이브러리를 설치하지 않아도 자바를
사용하는 애플리케이션 이미지를 만들 수 있다.
VOLUME /tmp
VOLUME에 지정된 디렉토리에 컨테이너가 접근할 수 있게 해준다. /tmp 디렉토리는 스프링 부트 애플리케이션이
톰캣을 위한 작업 디렉토리를 생성하는 곳이다. tmp 디렉토리는 컨테이너에게는 논리적인 디렉토리며,
호스트의 로컬 디렉토리를 간접적으로 가리킨다.
ADD target/sample-0.0.1-SNAPSHOT.jar sample.jar
sample.jar 애플리케이션 실행 바이너리 파일을 지정한 이름으로 컨테이너에 추가한다.
target/sample-0.0.1-SNAPSHOT.jar 파일을 sample.jar 파일로 이름을 바꿔 컨테이너에 추가한다.
EXPOSE 8080
컨테이너 내부에서 실행되는 스프링 부트 서비스를 호스트의 8080 포트에 바인딩 한다.
ENTRYPOINT [“java”,”-jar”,”/sample.jar”]
컨테이너가 시작될 때 기본으로 실행되는 애플리케이션을 지정한다. java -jar 명령으로 sample.jar 파일을 실행한다.
- 프로젝트 빌드
$ mvn package
- 도커 빌드
docker build -t sample:1.0 .
- 도커 이미지 frolvlad/alpine-oraclejdk8, sample이 생성된 것을 확인 할 수 있다.
$docker images sample 1.0 2653eae83290 5 hours ago 183MB frolvlad/alpine-oraclejdk8 latest 3a32bd04b7ef 2 weeks ago 167MB
- 8080, 80801 포트의 container 생성
docker run -d -p 8080:8080 --name sample-service1 sample:1.0 docker run -d -p 8081:8080 --name sample-service2 sample:1.0
- 8080포트와 8081포트 서비스 되는 것 확인
$ curl http://localhost:8080 Hello $ curl http://localhost:8081 Hello