Spring boot 3.xxx Docker CI / CD 구축 with Github Actions(1)

2.5*2 하빈·2023년 12월 24일
5

바로 자동 배포로 하실 분들은 아래 링크를 참조해주세요.
Spring boot 3.xxx Docker CI / CD 구축 with Github Actions(2)

수동 배포 동작 흐름
1. Docker 파일 생성 후 빌드
2. docker image 파일 생성
3. docker hub에 docker image 파일 push
4. EC2 서버에서 docker hub에 push 된 docker image 파일 pull
5. docker image 파일을 docker run 명령어로 실행


이번에 토이프로젝트를 진행하면서 CI/CD를 구축해보기로 했다.

이번 정리는 수동 배포와 자동 배포로 나뉘어서 정리하려고 한다.

우선 지금은 수동 배포를 알아보도록 하자.


1 - Docker 설치



2 - Docker hub Repository 생성


  • https://hub.docker.com/
    여기 링크로 접속해 회원가입 및 로그인을 진행한다.

  • 아래 이미지에 표시된 Create repository를 클릭한다.


  • Project Name : 자신의 프로젝트 이름

  • Namespace : 자기 계정 이름 (자동으로 설정된다.)

  • shot description : 간단한 설명 (개인 설정)

  • 설정을 하고 Create를 누르면 아래와 같이 생성이 된 것을 확인할 수 있다.


3 - Docker File 생성


  • 프로젝트 제일 상위에 DockerFile을 생성한다.

  • 우클릭에 New 누르고 file들 살펴보면 Dockerfile이 있을 것이다.


  • 생성하면 아래와 같이 내용을 변경해준다.
# open jdk 17 버전의 환경을 구성한다.
FROM openjdk:17-alpine

# build가 될 때 JAR_FILE이라는 변수 명에 build/libs/*.jar 선언
# build/libs - gradle로 빌드했을 때 jar 파일이 생성되는 경로임
ARG JAR_FILE=build/libs/*.jar

# JAR_FILE을 agaproject.jar로 복사 (이 부분(.jar)은 개발환경에 따라 다름)
COPY ${JAR_FILE} agagroup.jar

# 운영 및 개발에서 사용되는 환경 설정을 분리한다.
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "/agagroup.jar"]

4 - Docker Desktop 실행


  • 다운 받은 Docker Desktop을 실행하고 로그인한다.

  • 저는 이미 실행을 했기 때문에 아래와 같이 image들이 있습니다.

로그인을 안하면 인텔리제이에서 Dockerfile 실행할 때 오류남


5 - 개발환경(인텔리제이)에서 Dockerfile 실행


  • 각자 개발 환경에서 Dockerfile을 실행해줍니다.


  • 실행이 완료되면 Services에 이런식으로 화면이 뜰겁니다.


6 - 터미널 창 명령어 실행


  • 인텔리제이로 돌아가서 터미널 창을 열고 아래 명령어를 실행해줍니다.
# docker build --build-arg DEPENDENCY=build/dependency -t {dockerName}/{dockerRepository} .
docker build --build-arg DEPENDENCY=build/dependency -t habinoh/agaproject .

명령어 뒤에 점(.) 반드시 입력해주세요.

  • 다음으로 아래 명령어도 입력해줍니다.
docker push habinoh/agaproject

  • 그리고 Docker Desktop에 가서 확인해보시면 push된 파일을 확인할 수 있습니다.

이제 로컬 환경에서의 작업을 끝났습니다.


7 - EC2서버 접속하기 (Docker 설치)


  • 이제 EC2 서버로 접속합니다.
    EC2 서버 환경이 구축이 안 되어있거나 접속 방법을 모르시면
    아래 링크를 참조해 서버를 구축하시길 바랍니다.

AWS 서버 구축하기


  • EC2(우분투) 서버에 접속을 하셨다면 아래 명령어를 입력합니다.
# 패키지 업데이트
sudo apt-get update -y

# 기존에 있는 도커 삭제하기
sudo apt-get remove docker docker-engine docker.io -y

# 도커 설치하기
sudo apt-get install docker.io -y

# docker 서비스 실행하기
sudo service docker start

# /var/run/docker.sock 파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경하기
sudo chmod 666 /var/run/docker.sock

# ubuntu 유저를 docker 그룹에 추가하기
sudo usermod -a -G docker ubuntu

8 - EC2에서 Docker image pull 및 image 실행(run)


  • 이제 끝났습니다.

  • 아래 명령어를 입력해주세요.

sudo docker pull (도커 허브 ID)/(Repository 이름)
sudo docker run -p 8080:8080 (도커 허브 ID)/(Repository 이름)

# sudo docker pull habinoh/testproject
# sudo docker run -p 8080:8080 habinoh/testproject

  • 이제 실행되는 것을 확인할 수 있습니다.

코드 변경이 필요하면 아래와 같은 순서로 하시면 됩니다.

1. 프로젝트 빌드 후 jar 파일 새로 생성 (빌드 다시 하기)

2. 터미널 창에 명령어 실행하기
docker build --build-arg DEPENDENCY=build/dependency -t habinoh/testproject .

3. docker push habinoh/testproject

4. EC2 우분투 환경에서 아래 명령어 입력하기
sudo docker pull (도커 허브 ID)/(Repository 이름)
sudo docker run -p 8080:8080 (도커 허브 ID)/(Repository 이름)


Docker로 서버 배포를 해보았는데요.

이렇게 해도 아직까지 배포를 하기에 번거롭습니다.

그래서 변경사항이 생기면 바로바로 수정되어 배포가 되도록
자동 배포를 해보려고합니다.

링크를 눌러서 자동배포를 함께 하시죠!

profile
끝내주는 남자

0개의 댓글