반응형

1. 시험환경

    ˙ Ubuntu 20.02 (AWS EC2)

    ˙ Java 11

    ˙ Spring Boot (Gradle, JIB)

 

2. 목적

    ˙ GitHub, Docker Hub, AWS EC2를 활용하여 Integration 및 Deploy 구축한다.

    ˙ Gradle, JIB, docker 사용법을 학습한다.

 

3. 적용

    ① 개발자는 IDE 환경에서 Spring Boot 프로젝트를 생성하고 개발한다.

    ② 개발자는 프로젝트 코드를 GitHub에 push한다.

    ③ AWS EC2에서 빌드 및 배포를 위해 프로젝트 코드를 checkout 한다.

        - GitHub Repository가 public인 경우 : 별도의 절차없이 clone, push, pull  가능하다.

        - GitHub Repository가 private인 경우 : 사용자 계정, 토큰을 이용하여 clone, push, pull 가능하다.


[Local 빌드 및 배포하는 방법]

    ④ gradle을 이용하여 jar 또는 war 패키지로 빌드한다.

        - $./gradlew clean build

    ⑤ 패키지가 생성된 폴더로 이동한다.

        - $cd build/libs

    ⑥ 패키지를 실행한다.

        - $ java –jar [pkg.war]

패키지 실행


[Docker 빌드 및 배포하는 방법]

    ④ JIB을 이용하여 docker image로 빌드하고 docker Hub에 push 되었는가 확인한다.

        - 사전작업1 : docker 설치 (★)

        - 사전작업2 : docker login (★)

        - 사전작업3 : gradle.build 파일에서 JIB 플로그인 추가 및 설정 (★개발 및 배포 환경에 따라 설정)

        - $./gradlew clean jib

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
plugins {
    id 'com.google.cloud.tools.jib' version '3.1.4'
}
 
jib {
    from {
        image = 'adoptopenjdk/openjdk11:alpine-jre'
    }
    to {
        image = 'docker-hub-repository'
        tags = ['1.0']
    }
    container {
        entrypoint = ['java''-Dspring.profiles.active=template''-jar''template-0.0.1-SNAPSHOT.war']
        // mainClass = 'com.test.StartApplication'
        jvmFlags = ['-Xms512m''-Xmx512m''-Xdebug''-XshowSettings:vm''-XX:+UnlockExperimentalVMOptions''-XX:+UseContainerSupport']
        ports = ['8080']
 
        environment = [SPRING_OUTPUT_ANSI_ENABLED: "ALWAYS"]
        labels = [version:project.version, name:project.name, group:project.group]
        creationTime = 'USE_CURRENT_TIMESTAMP'
        format = 'Docker'
    }
    extraDirectories {
        paths {
            path {
                from = file('build/libs')
 
            }
        }
    }
}
cs

빌드한 docker image가 docker Hub에 push 되었음을 확인

 

    ⑤ 서비스 배포할 서버에서  docker Hub에 등록된 이미지를 다운 받는다.

        - $docker pull [repo:tag]

 

    ⑥ docker 컨터네이너를 실행한다.

        - $docker run –p 8080:8080 [img-id]

 

4. 결과

    ˙ Local 또는 Docker 배포한 서비스가 정상동작하는지 접속한다.

        - URL : http://[ip:8080]/index

배포 서비스 접속

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts