Spring 애플리케이션 배포 스크립트로 빌드하기

김윤준·2024년 3월 26일

먼저 EC2에 Spring application 서버 환경 구성을 한다.

프로젝트 배포 시 많은 과정과 명령어 입력이 수행됨.

따라서 명령어를 작성해 둔 쉘 스크립트로 이를 실행하는 것이 배포 스크립트.

1. 배포 스크립트 deploy.sh 생성

생성 후 파일 권한을 설정해준다.
chmod +x ./deploy.sh

#!/bin/bash

# 배포 스크립트 위치
REPOSITORY=/home/ec2-user
# 프로젝트 레포 이름
PROJECT_NAME=Co-De
# 프로젝트 레포로 이동
cd $REPOSITORY/$PROJECT_NAME/

# git pull
echo "> Git Pull"
git pull origin main

echo "> 프로젝트 Build 시작"
./gradlew build

echo "> step1 디렉토리 이동"

cd $REPOSITORY

echo "> Build 파일 복사"
# ~위치에 SNAPSHOT으로 끝나는 파일 복사
cp $REPOSITORY/$PROJECT_NAME/build/libs/*SNAPSHOT.jar $REPOSITORY/

# SNAPSHOT.jar 파일 이름 "JAR_NAME"으로 저장
JAR_NAME=$(ls | grep *SNAPSHOT.jar | tail -n 1)
echo "> JAR Name: $JAR_NAME"

# 스프링 서버가 구동중인지 확인
echo "> 현재 구동중인 애플리케이션 pid 확인"

CURRENT_PID=$(ls | pgrep -f *.SNAPSHOT.jar)

echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
   echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
   echo "> kill -15 $CURRENT_PID"
   kill -15 $CURRENT_PID
   sleep 5
fi

# 애플리케이션 배포
echo "> 새 애플리케이션 배포"
java -jar $JAR_NAME 2>&1 &

과정. 위에 설명과 함께 나와있다.

  1. 프로젝트 레포에 git pull
  2. 프로젝트 빌드
  3. 빌드한 jar 파일 ec2-user 폴더로 복사
  4. 스프링 서버가 이미 실행 중이면 취소 아니면 넘어감
  5. 애플리케이션 배포

EC2에 따로 저장한 application.properties도 빌드 시 같이 실행시키고 싶으면

배포 스크립트 맨 밑의 애플리케이션 실행 코드를 아래 두 형식 중 한 형식으로 변경시켜주면 된다.

java -jar $JAR_NAME --spring.config.location=file:///home/ec2-user/application.properties 2>&1 &
java -jar \
   -Dspring.config.location=classpath:/application.properties,/home/ec2-user/application.properties \ 
 $JAR_NAME 2>&1 &
  • classpath:/application.properties는 기본 classpth 경로 : src/main/resources 안에 application.properties가 생성됨.

  • /home/ec2-user/application.properties 는 내가 저장한 application.propertes 경로

근데 application.properties는 jar파일과 같은 경로에 있으면 애플리케이션 실행 시 자동으로 설정 됨.

0개의 댓글