3 Aug 2020

spring boot + Gradle + docker (windows Home 버전)

springboot + Gradle + docker (windows환경)


- windows Home 버전 에서 docker를 설치해야 한다.

- 보통 docker은 windows환경에서 사용하기 매우 불편하다.

- 구글에 검색해봐도 windows enterprise, pro버전이어야 한다는 조건을 명시한다.(<- home버전은 어쩌라는건지 모르겠다!)

- 대부분의 거의 대다수의 사용자는 windows Home 버전일 것이다.

- 현업에서 gradle을 많이 사용함에도 불구하고 maven으로 된 구글 검색 결과가 많다.

- 이 포스팅으로 windows Home 버전을 사용하는 분들이 spring boot+gradle를 docker로 좀더 쉽게 배포 이미지를 만들 수 있기를 바랍니다.


docker toolbox 설치하기


[docker toolbox]:https://github.com/docker/toolbox/releases next 버튼 누르다 보면 설치가 완료 됩니다.

docker quickstart terminal이 생성되고 이 터미널을 사용해서 docker를 다룰 수 있습니다.


docker는 준비완료


spring 설정하기


  • bootJar을 이용해 .jar파일을 생성합니다.

  • bootJar을 더블클릭하면 생성됩니다.

    bootJar


  • jar파일의 생성위치 build/libs

    jar경로


  • 최상단 프로젝트에 Dockerfile을 생성합니다.

    경로


  • Dockerfile 작성


# spring을 어떤 jdk버전위에서 돌리냐에 따라 다릅니다. 저는 jdk11을 사용했습니다.
FROM adoptopenjdk/openjdk11:ubi

# 사용자
LABEL maintainer=사용자@gmail.com

# manifest파일 경로
VOLUME /tmp

# 컨테이너가 열어줄 포트 번호를 지정합니다.
EXPOSE 8080

# jar file 결정
ARG JAR_FILE=build/libs/*.jar

# 지정된 jar파일을 이름.jar로 생성
ADD ${JAR_FILE} springboot-chat-streaming.jar

# Run the jar file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-chat-streaming.jar"]


Docker image 생성하기


  • docker quickstart terminal접속합니다.

  • 만들고 있는 spring boot project 경로로 들어갑니다.

  • terminal에서 다음 명령어를 통해 build를 시작합니다.


//docker build -t ${dockerhubId}/${dockerhub repository}:${tagName}
docker build -t  dockerhubId/repo:springboot-chat-streaming . // <- 요 . 부분까지 입력하셔야 합니다.
// dockerfile에서 ADD ${JAR_FILE} springboot-chat-streaming.jar 에서 springboot-chat-streaming부분 입력


  • 빌드가 완료되면 이미지가 생성될 겁니다.

  • 아래 명령어를 통해 생성됬는지 확인합니다.


//전체 이미지 확인
docker images


이미지를 실행 시켜보자!!


  • 다음 명령어를 통해 run하면 실행되는 겁니다.

docker run -d -p 8080:8080 springboot-chat-streaming//<- 이미지 이름


실행된건지 확인하기


  • 보통은 로컬에서 테스트하면 localhost:8080으로 접속하여 확인하지만 지금 이미지가

  • docker에서 돌아가고 있기 때문에 접속 경로가 다릅니다.

  • 다음 명령어를 통해 ip를 확인합니다.

docker-machine ip
  • 만약에 192.168.19.18이렇게 나온다면 192.168.19.18:8080 이렇게 접속하셔야 합니다.


Tags:
0 comments