애플리케이션 실행파일 (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 로 주고 실행시켜 보았더니 잘 실행되었다.
끝.
'Spring' 카테고리의 다른 글
[Spring Webflux] 리액티브 프로그래밍이란? / 리액티브 스트림즈 컴포넌트 (0) | 2022.11.29 |
---|---|
[Spring] Spring MVC 웹 애플리케이션 계층별 개발 흐름 정리 (수정중) (0) | 2022.11.15 |
[Spring] API 문서화 - Spring Rest Docs (0) | 2022.11.13 |
[Spring] 슬라이스 테스트 - API 계층, 데이터 액세스 계층 테스트 (0) | 2022.11.11 |
[Spring] Mockito, Mock 이란? (0) | 2022.11.10 |
댓글