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

진행과정 : 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 스크립트 내용상 절차는 간략하게 다음과 같이 나열할 수 있다.
- ~~Java 테스트 : Java 소스코드를 테스트~~ → 이번 실습에서 테스트는 제외
- Java 빌드 (프로그램 빌드) : Gradle 을 통한 Java 빌드
- Docker 이미지 빌드 : Docker 를 통한 Docker Image 빌드
- 빌드된 Docker Image 업로드를 위한 저장소 Registry 로 사용하기 위한 Docker Hub 에 로그인
- 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
- Build : Docker Image 생성 ← Dockerfile
- 아까 Github 에 Java 코드와 함께 올렸던 Dockerfile 을 통해 Github Action 는 도커 이미지를 생성
- Push : Docker Image 업로드 → Docker Registry (도커 저장소)
- 빌드된 Docker Image 업로드를 위한 저장소 Registry 로 사용하기 위한 Docker Hub 에 로그인
- Github Action 스크립트 내 민감한 정보 직접 넣으면 위험하기에 따로 설정으로 로그인 정보 주입
- Docker Hub 에 로그인에 아이디와 Access Token 값이 필요한데, 이건 탈취되면 안된다.
CD : AWS EC2 생성 후 내부접속하여 CI 로 만든 Docker 이미지 실행
위치 : AWS EC2 = 어플리케이션(프로그램)이 구동될 서버
- 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)
- Run : Docker Image 실행 = Container
- 로그인 완료한 Docker Hub 에서 Docker Image 다운로드 (Pull) 완료했다면 Docker Image 구동
- Docker Container 구동 및 서버 확인
이상으로, 수동 절차 : Github Action 으로 CI하고 개발자가 직접 CD를 진행하는것에대한 이론적인 과정에 대해서 알아보았고 다음포스트에서는 직접 실습 해보는과정에 대해서 다뤄보겠습니다.