바로 자동 배포로 하실 분들은 아래 링크를 참조해주세요.
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를 구축해보기로 했다.
이번 정리는 수동 배포와 자동 배포로 나뉘어서 정리하려고 한다.
우선 지금은 수동 배포를 알아보도록 하자.
우선은 개발환경에 (Window, Mac) Docker를 설치해야한다.
https://www.docker.com/products/docker-desktop/
여기 링크로 접속해서 시스템에 맞는 Docker를 설치하면 된다.
https://hub.docker.com/
여기 링크로 접속해 회원가입 및 로그인을 진행한다.
아래 이미지에 표시된 Create repository를 클릭한다.
Project Name : 자신의 프로젝트 이름
Namespace : 자기 계정 이름 (자동으로 설정된다.)
shot description : 간단한 설명 (개인 설정)
프로젝트 제일 상위에 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"]
다운 받은 Docker Desktop을 실행하고 로그인한다.
저는 이미 실행을 했기 때문에 아래와 같이 image들이 있습니다.
로그인을 안하면 인텔리제이에서 Dockerfile 실행할 때 오류남
# docker build --build-arg DEPENDENCY=build/dependency -t {dockerName}/{dockerRepository} .
docker build --build-arg DEPENDENCY=build/dependency -t habinoh/agaproject .
명령어 뒤에 점(.) 반드시 입력해주세요.
docker push habinoh/agaproject
이제 로컬 환경에서의 작업을 끝났습니다.
# 패키지 업데이트
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
이제 끝났습니다.
아래 명령어를 입력해주세요.
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로 서버 배포를 해보았는데요.
이렇게 해도 아직까지 배포를 하기에 번거롭습니다.
그래서 변경사항이 생기면 바로바로 수정되어 배포가 되도록
자동 배포를 해보려고합니다.
이 링크를 눌러서 자동배포를 함께 하시죠!