Github Action 과 Docker 을 통한 CI/CD 배포 (2)

justlikesh·2024년 5월 11일

자 이제 본격적인 실습에 들어가봅시다.
우선 도식화해서 표현하면 이런식으로 할수있는데

진행과정 : Develop → Test Java → Build Java → Build Docker Image → Push → Pull → Run

CI 사전 준비 : 배포하고자 하는 Java 코드 작성 및 Github 에 업로드

위치 : Local (내 컴퓨터)

Develop your (Java) Application : Java 개발

만들려는 Docker Image 는 일반적으로 어플리케이션 구동(배포)을 위한것이고 이번 예시는 Java 어플리케이션

  • 밤을 새워가며 열심히 개발한 Java 소스코드를 Github Repository 에 업로드한다 (Git Push)
  • 추가 1 : Github Action 동작 스크립트 도 함께 올려야 Github 이 그걸 읽어 Github Action 수행
    • 프로젝트에 **.github** 디렉토리 생성 후 .github/workflows/**script.yml** 스크립트 등록
  • 추가 2 : Dockerfile 도 함께 올려야 Github Action 동작 스크립트에서 Docker 를 통해 이미지 빌드 가능
    • 프로젝트에 **Dockerfile** 정의하여 등록

CI : Github 내 Java 코드를 Github Action 로 가져와 Docker 빌드

위치 : Github Action

Java 코드에 대한 테스트 과정은 따로 진행하지 않고(연습이니까), Java 빌드 먼저 시작 후 Docker Image 빌드

  • Github Repository 에 Java 소스코드가 업로드되는 순간(Git Push) Github Action 스크립트 구동
  • Github Action 스크립트는 개발자 직접 작성하여 Github Repoistory 에 Java 코드와 함께 올린다
    • Github Action 스크립트 내용상 절차는 간략하게 다음과 같이 나열할 수 있다.
      1. ~~Java 테스트 : Java 소스코드를 테스트~~ → 이번 실습에서 테스트는 제외
      2. Java 빌드 (프로그램 빌드) : Gradle 을 통한 Java 빌드
      3. Docker 이미지 빌드 : Docker 를 통한 Docker Image 빌드
      4. 빌드된 Docker Image 업로드를 위한 저장소 Registry 로 사용하기 위한 Docker Hub 에 로그인
      5. Docker Hub 에 앞서 빌드한 Docker Image 업로드 (Push)
  • 간략히 절차를 살펴 보았으니 이제부터 시작

Test and Build Java Application

앞서 개발한 Java 소스코드를 테스트한 뒤 Java 빌드 (JAR 혹은 WAR 생성)

앞서 언급하였듯 Java 코드에 대한 테스트는 이번 실습에서 제외. Java 빌드는 Gradle 을 통해 간편하게 진행

Build Docker Image and Push Docker Image to Registry

  1. Build : Docker Image 생성 ← Dockerfile
    • 아까 Github 에 Java 코드와 함께 올렸던 Dockerfile 을 통해 Github Action 는 도커 이미지를 생성
  2. Push : Docker Image 업로드 → Docker Registry (도커 저장소)
    • 빌드된 Docker Image 업로드를 위한 저장소 Registry 로 사용하기 위한 Docker Hub 에 로그인
      • Github Action 스크립트 내 민감한 정보 직접 넣으면 위험하기에 따로 설정으로 로그인 정보 주입
        - Docker Hub 에 로그인에 아이디와 Access Token 값이 필요한데, 이건 탈취되면 안된다.

CD : AWS EC2 생성 후 내부접속하여 CI 로 만든 Docker 이미지 실행

위치 : AWS EC2 = 어플리케이션(프로그램)이 구동될 서버

  1. Pull : Docker Image 다운로드 ← Docker Registry (도커 저장소)
    • 개발자가 직접 AWS EC2 에 접속하여, 앞서 Docker Hub 에 업로드한 Docker Image 다운로드
      • 가장 먼저 AWS EC2 에는 기본적으로 Docker 가 설치되어있지 않기때문에, Docker 설치가 먼저
      • Docker Hub 에서 Docker Image 를 다운로드할것이기에 Docker Hub 에 로그인
      • 로그인 완료한 Docker Hub 에서 Docker Image 를 다운로드 (Pull)
  2. Run : Docker Image 실행 = Container
    • 로그인 완료한 Docker Hub 에서 Docker Image 다운로드 (Pull) 완료했다면 Docker Image 구동
    • Docker Container 구동 및 서버 확인

이상으로, 수동 절차 : Github Action 으로 CI하고 개발자가 직접 CD를 진행하는것에대한 이론적인 과정에 대해서 알아보았고 다음포스트에서는 직접 실습 해보는과정에 대해서 다뤄보겠습니다.

profile
열심히 = 하기싫을때도 최선을 다하는것

0개의 댓글