플랫폼/스프링 프레임 워크

스프링 부트 도커 파일 만들기 / docker/ spring boot / intelly j / jib / jar / gradle

삐뚤어진 개발자 2020. 3. 25.

스프링 부트 웹 사이트를 docker로 배포하려한다.

 

일단 내 개발 환경은 아래와 같다.

os : window 10

ide : intelly j (인텔리제이)

framework : spring boot / gradle (bulid)

 

 

jar 파일은 자바 압축 파일 정도로 이해하면 되겠다.

jar 파일을 빌드해서 jib로 도커 이미지를 만들어 보겠다.

 

1. 먼저 jib 라이브러리를 추가 해준다. (Gradle)

(maven을 사용하는 사용자라면, 구글링으로 방법을 찾기 바란다.)

jib란?

https://github.com/GoogleContainerTools/jib

 

구글에서 제공하는 자바소스를 컨테이너화 시켜주는 오픈소스다.

아래와 같이 설명되어있다.

Jib는 Docker 데몬과 Docker 모범 사례에 대한 숙달없이 Java 애플리케이션에 최적화 된 Docker 및 OCI 이미지를 빌드합니다. Maven 및 Gradle 용 플러그인 및 Java 라이브러리로 제공됩니다.

 

 

- build.gradle 파일에서 아래의 이미지와 같이 jib 를 추가한다.

id 'com.google.cloud.tools.jib' version '1.0.0'

 

추가한 뒤 gradle 업데이트를 해주면, 아래의 그립과 같이 gradle > other 폴더에 jibDockerBuild 라는 항목과 jib 등등 이 생긴다.

 

그럼 jar 파일을 생성해보겠다. 사용자의 환경에 따라 war이 생길수도 있는데, 상관없을 것같다. 

jar파일과 war 파일의 차이점을 알고 싶다면 아래의 링크를 참조해보길 바란다.

http://taewooblog.tistory.com/111

 

2. jar (또는 war) 파일을 만든다.

아래의 이미지와 같이 gradle > bulid 폴더에서 bootJar을 더블클릭 해준다.

 

- 간혹 스프링 부트 프로젝트 메인클래스가 모호하다는 에러가 뜰수 있다.  

 

그럴땐 당황하지 말고 

build.gradle 파일에 

springBoot {
	mainClassName = "메인클래스 참조경로"
}

를 추가해준다.

 

 

jar 파일 빌드가 성공하면, 아래와 같이 lib 폴더에 jar파일이 생긴걸 확인할 수 있다.

3. 이제 docker 이미지를 만든다.

 

gradle > other 폴더의  jibDockerBuild 를 더블클릭 해준다.

 

에러가 났다.

 

에러: 

Multiple valid main classes were found: com.coupang_api.CoupangApiWebApplication, com.coupang_api.Coupang_api.OpenApiTestApplication, perhaps you should add a `mainClass` configuration to jib

 

jib에 메인 클래스를 지정해줘야하는 것 같다.

build.gradle 파일에 아래와 같이 jib mainClass 경로를 설정해준다.  

 

springBoot {
	mainClassName = "메인클래스 참조경로"
}
jib {
	container.mainClass = "메인클래스 참조경로"
}

 

위의 경로 설정후 다시 jibDockerBuild 를 더블클릭 해주면.. 다른 에러가 난다.

-- 에러 내용

Execution failed for task ':jibDockerBuild'.
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: Build to Docker daemon failed

 

파이프가 끝났습니다.

 

 

=> 아마도 윈도우 10에 도커를 설치했는데, 실행하니 아래와 같은 에러가 나와서 도커가 제대로 설치되지 않아서 생긴 문제로 추측했다.

-- 에러 내용
Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled

 

오류 내용을 찾아보니, 작업관리자에서 cpu 가상화 기능이 사용할 수 있도록 설정되어있는지 확인하란다.

 

이상하게도 사용으로 설정되어있는데.. 안된다.. 그래도 다시 설정해보겠다.

 

설정방법은 cmd를 관리자 권한으로 열어서 아래의 명령어를 실행한뒤 재부팅 해준다.

bcdedit /set hypervisorlaunchtype auto

 

 

 

=> 재부팅했는데도 똑같이 안되면 도커를 지웠다가 다시 깔 것이다.

 

 

다행히도 도커 빌드에 성공했다.

cmd 창을 열어 아래의 명령어를 입력하면 도커 이미지가 잘 빌드 된걸 볼 수 있다.

docker images

 

댓글