Intellij Gradle Docker Image

Published: by Creative Commons Licence

간단한 SpringBoot 프로젝트를 만들고, Dockerfile을 통해서 애플리케이션을 docker image로 만들고, 실행해보고, docker hub에 remote로 푸시하는 방법에 대해서 알아보려고 한다.

PreSetting

가상화(Virtualization) 지원 및 활성화

작업 관리자 성능 탭에서 가상화 지원 및 활성화 확인이 가능하다.

Docker for Window 다운로드

https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Docker for Window 설치

install required Windows components for WSL 2 옵션 선택 확인

설치중

설치완료 후 재부팅 시 아래 이미지가 뜨면 https://aka.ms/wsl2kernel 클릭

x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지'를 클릭을 하거나 아래 링크 클릭
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Dos창 설치 확인

$ docker -v
Docker version 20.10.8, build 3967b7d

Springboot 프로젝트 만들기

Intellij 기준 Spring Initializr 프로젝트를 생성한다.

build.gradle

com.palantir.docker plugin을 추가하고 docker{} 빌드 추가

plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'com.palantir.docker' version '0.25.0'
}

group = 'com.sisipapa.study'
version = '1.2'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

docker {
    name "p8000:${project.version}"
    tag 'DockerHub', "coolguy239/p8000:${project.version}"
    dockerfile file('Dockerfile')
    files tasks.bootJar.outputs.files
    buildArgs(['JAR_FILE': tasks.bootJar.outputs.files.singleFile.name])
}

test {
    useJUnitPlatform()
}

Dockerfile 생성

FROM lpicanco/java11-alpine
EXPOSE 8000
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "-Dserver.port=8000", "-Djava.security.egd=file:/dev/./urandom", "/app.jar"]

Controller 추가

server.port를 리턴하는 Controller 생성.

@RestController
public class CommonController {

    @Autowired
    private Environment env;

    @GetMapping("/")
    public String port(){
        return env.getProperty("server.port");
    }

}

Docker hub push

gradle > docker > dockerPushDockerHub 더블클릭


Docker hub Image 확인

Docker Image run

Dos 창에서 실행

Docker Apllicaiton내에서 실행


Optional Settings(Container Name, Ports 입력)

LOG 확인 및 브라우저 확인 가능

참고

gradle docker image 생성하기: spring boot
[4] Spring Boot 에서 gradle task 설정하기
Spring Boot, Dockerfile로 이미지 생성, 배포하기

Github

https://github.com/sisipapa/Springboot-docker