프로젝트의 규모가 커질수록 코드 검증과 배포를 자동화해주는 CD가 빛을 발합니다. 특히나 배포한 서버나 작업물이 여러 개일 경우 발생하기 쉬운 실수를 자동화하여 방지할 수 있습니다.
때문에 스케일 아웃으로 서버 성능을 높일 예정이었던 e-commerce 대용량 서버 프로젝트에 CD구축이 필요하다 생각하였고 이 과정을 기록해보고자 합니다.
프로젝트의 github주소로 들어가 ssh url을 복사하여 Jenkins 소스코드관리
에 붙여넣습니다.
build 및 upload 작업 이후 배포 서버에 SSH 연결을 위한 플러그인SSH
를 설치합니다.
( Publish Over SSH
플러그인은 보안 이슈로 2022년 1월부터 suspend 되어 아래와 같이 진행하였습니다.)
Dashboard
> Plugin Manager
> SSH
검색하여 설치Dashboard
> 시스템설정
에서 SSH로 접속할 서버 host와 private key를 등록# 도커 설치하기
yum -y update
yum -y install docker docker-registry
# 도커 서비스 시작하기
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
를 입력했을 때 inactive
상태라면 docker service
가 실행이 안 된 상태입니다.Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
에러가 발생한 경우,
sudo chmod 666 /var/run/docker.sock
/var/run/docker.sock
파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경하면 해결됩니다.
# 설치가능한 jdk 목록 확인하기
yum list java*jdk-devel
# open jdk 11 설치
yum install java-11-openjdk-devel.x86_64
# javac 설치경로 확인
which javac
# /bin/javac에 연결된 원본파일 위치 확인
readlink -f /bin/javac
# 환경변수 설정하기
vi /etc/profile
# 파일 맨 하단에 아래 문구를 추가한다
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64
# 설정 후 명령어 입력
source /etc/profile
# 결과 확인
# /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64 가 출력되면 올바르게 설정된 것이다.
echo $JAVA_HOME
Jenkins 관리
→ Global Tool Configuration
→ JDK
에서 아래와 같이 등록https://hub.docker.com/ 에서 계정을 만들고, create repository
버튼을 눌러 private 레포지터리를 생성한다.
# 도커 설치
apt-get install docker.io
# 도커 서비스 구동하기
sudo systemctl start docker
application.yml
파일을 끼워넣기도커를 사용한 CD 설계는 처음이었기 때문에 구축 과정을 이해하기가 어려웠습니다. 이 과정에서 Jenkins와 Docker가 얼마나 편리한 툴인지 느낄 수 있었습니다. 하지만 조금 더 자세한 동작 원리를 배우기 위해서 도커를 사용하지 않고 CD를 구축해보는 경험도 좋을 것 같다고 생각하였습니다.
https://zin0-0.tistory.com/269?category=923002