GCP VM (Compute Engine)에 Spring Boot 프로젝트 수동 배포하기 (feat. private repo)

Noul·2025년 4월 27일
post-thumbnail

GCP VM (Compute Engine)Spring Boot프로젝트를 수동으로 배포하는 과정을 정리한다.


기본 환경 세팅

우선 VM 웹 콘솔에 SSH로 접속한 뒤, 필요한 패키지를 설치해준다.

sudo apt update
sudo apt install git
sudo apt install openjdk-21-jdk

배포할 프로젝트는 java21 버전을 사용하기 때문에, JDK도 맞춰서 21 버전으로 설치해줬다.



프로젝트 클론 및 빌드

git clone <원격저장소 레포 주소>

./gradlew clean build

클린 빌드 과정에서 ./gradlew: Permission denied 라는 문구가 뜬다면 다음 명령어로 gradlew 스크립트 파일에 실행 권한을 추가한 뒤 다시 빌드해준다.

chmod +x ./gradlew


JAR 실행

// 빌드된 jar 파일 확인
ls build/libs/

nohup java -jar build/libs/<jar 파일> &

nohup 명령어를 추가하면 인스턴스가 종료되지 않는 한 백그라운드에서 계속 실행된다.


다음 명령어로 실행을 확인하고 종료할 수 있다.
// 실행 확인
ps -ef | grep java	# PID 확인

// 종료
kill <PID>

포그라운드로 실행하려면 앞의 `nohup`, `&` 명령어를 빼면 된다. 하지만 인스턴스가 종료되면 같이 실행이 종료된다.

Git private repo에 접근이 필요한 경우(SSH 연동)

jar 실행 실패

JAR 파일 실행 중 오류가 발생했다.

설정 파일(application.yml)을 서브모듈로 private repo에 분리해두었기 때문에, 해당 설정을 읽어오지 못하는 것이다.

그래서 우선 submodule repoclone하려고 했으나 이번엔 로그인이 안되는 것이다.

아이디 비밀번호 정확하게 입력했는데,,

git authentication load 실패

찾아보니 Github에서 2021년부터 HTTPS 비밀번호 인증을 막고, SSH 또는 Personal Access Token을 사용하도록 변경했던 것이다.

그래서 SSH로 인증을 해야한단다.


SSH Key 생성 및 Github 등록

우선 VM 인스턴스에 SSH 키를 생성한다.

ssh-keygen -t rsa -b 4096 -C "<github이메일>"

정상적으로 생성되면 ~/.ssh 디렉토리에 id_rsa(개인 키)와 id_rsa.pub(공개 키)를 확인할 수 있다.

해당 폴더로 이동해서 공개키인 id_rsa.puh을 복사하여 github에 등록해야 한다.

cat ~/.ssh/id_rsa.pub

github에 접속했다면 settings - SSH and GPG keys - New SSH key를 클릭한다.

Key에 복사한 키값을 붙여넣기 후 생성해준다.

그리고 다시 VM 웹 콘솔에서 다음 명령어로 잘 등록 되었는지 확인할 수 있다.

ssh -T git@github.com

이후 다시 private repoclone하면 되는데, 이 때 꼭 SSH로 clone 해야한다.

위에서 말했던 대로 HTTPS 비밀번호 방식은 인증이 불가능해서 clone을 받을 수 없기 때문.


다음으로 submoduleupdate하고, --spring.config.location 옵션으로 해당 설정 파일 경로를 지정한다.

git submodule update --init --recursive

nohup java -jar build/libs/[jar 파일명] --spring.config.location=<서브모듈 설정 파일의 경로> &

배포 완료

서비스가 정상적으로 실행되었다 !



https://docs.github.com/ko/get-started/git-basics/about-remote-repositories#cloning-with-https-urls

profile
고민하고 트레이드오프

0개의 댓글