본문 바로가기
Spring

[Spring] 애플리케이션 빌드 / 실행 / 배포

by jungha_k 2022. 11. 15.

애플리케이션 실행파일 (Executable Jar) :  

애플리케이션을 빌드해서 실행 가능 하도록 만듬


애플리케이션 빌드

- IntelliJ IDE 를 통한 빌드

Spring Boot - Gradle 빌드 툴을 이용해 애플리케이션 빌드 가능한 플러그인을 지원한다

 

:bootJar 또는 :build task 를 더블클릭하면 

 

build/libs 디렉토리에 Jar 파일 생성

 

 

* :build vs :bootJar

:build : Gradle 에서 build와 관련된 모든 task 실행됨 (:assemble, :check ...)

plain Jar 파일 하나 더 생성됨

 

:bootJar : 애플리케이션의 실행 가능한 Jar (Excutable Jar)파일을 생성 위한

task 만 실행 됨

-- 단순 excutable Jar 파일만 필요할 경우 추천

 


Gradle Task 를 이용한 빌드

 

- Git Bash

- Window Power Shell 

 

통해서 빌드 가능하다!

 

 

프로젝트 root 경로에서 터미널 열기

//Window 터미널
PS D:\codestates\project\section3-week4-build> .\gradlew bootJar
//Git Bash
MINGW64 /d/codestates/project/kdt/for-ese/section3-week4-build (main)
$ ./gradlew build

 

빌드 정상 종료 시 

IntelliJ와 마찬가지로 build/libs 디렉토리에 Jar 파일 생성 됨

 


애플리케이션 실행

: 완성된 Jar(Excutable Jar) 파일 이용해서 애플리케이션 실행 가능하다!

 

 

애플리케이션 실행 순서 : 

 

생성된 Jar 파일이 있는 디렉토리 경로로 이동

터미널 창 오픈 후에

java -jar Jar파일명.jar

입력

 

 

 

- 프로파일 (Profile) 적용

: 로컬, 서버별 사용하는 데이터베이스가 다를 수 있다.

(로컬에서 사용하는 인메모리 db h2를 서버에 올려서도 사용할 수는 없음)

 

➡ 로컬 환경 / 서버 환경 일때

각각 DB 설정 정보를 다르게 하여 실행 파일에 포함시킬 수 있다!

 

 

1. application.yml : 애플리케이션 실행 환경에 상관 없는 공통 정보들

2. application-local.yml : 로컬 환경에서 사용하는 정보들

3. application-server.yml : 서버 환경에서 사용하는 정보들 

(실제 서버, AWS 같은 클라우드에서 실행시킬 시..)

 


- IntelliJ IDE 에서 프로파일 적용

 

 

Edit Configurations 클릭

 

Active profiles : 에다가 내가 사용할 profile 입력

(application-local.yml) 의 local

 

애플리케이션 실행시 확인 가능

 

 

 

- 빌드된 실행 파일에 프로파일 적용

/d/codestates/project/kdt/for-ese/section3-week4-build/build/libs (main)
$ java -jar section3-week4-build-0.0.1-SNAPSHOT.jar --spring.profiles.active=local

Jar 파일에 --spring.profiles.active=local 설정을 추가해주면 된다!

 


 

애플리케이션 배포

 

- 전통적인 배포 방법

: 표준 유닉스 툴(scp, sftp) 사용, Excutable Jar 파일을 서버로 간단히 전송

 

 

- 클라우드 서비스 배포 방법

   : PaaS(Platform as a Service) - Cloud Foundry, Heroku

cf command line 사용

 

   : IaaS (Infrastructure as a Service)

- AWS /  AWS Elastic Beantalk, AWS Container Registry, AWS Code Deploy

- Azure / Azure Spring Cloud, Azure App Service

- Google Cloud

 

   : CI / CD 플랫폼을 사용한 배포

- Github Actions, Circle CI

 

 

 


실습 진행한 부분 

: 빌드된 Excutable Jar 파일에 프로파일 적용 / 애플리케이션 실행 해보기

 

 

1. application-server.yml 파일에 MySQL 접속 정보 설정하기

 

 

url 의 jdbc:mysql://localhost:3306/ 뒤에는

프로젝트에서 사용하는 database의 이름을 지정해주면 된다.

 

createDatabaseIfNotExist=true 로 해당하는게 없으면 하나 생성해주기로 했다.

 


 

2. Edit Configuration 해서 Profile 적용시킨 뒤, :build or :bootJar 로 빌드시키기

(이미 빌드된 실행파일이라면 위에 '빌드된 실행 파일에 프로파일 적용' 부분 확인)

 


3. postman 으로 커피 정보를 post 하였다.

mysql workbench 에서 확인해보니 데이터가 잘 저장되었다.

 


⚠ 오류

'No database selected Select the default DB to used by double-clicking its name in the SCHEMAS list in the sidebar.'

 

 

➡ 말그대로 default DB가 없으니 더블클릭하여 지정해주라는 의미다.

워크벤치를 실행하면 맨 처음에는 사이드바 탭이 'Schemas'가 아닌 'Administration' 으로 되어있는데, 

그래서 접속 자체가 안된줄 알고 헷갈렸던 것 같다.

 

Schemas를 누른뒤에 프로젝트에 해당하는 db를 더블클릭해주고,

다시 쿼리문을 조회하니 잘 나온다! 

 


 

 

git bash 로도 profile을 server 로 주고 실행시켜 보았더니 잘 실행되었다. 

끝.

댓글