본문 바로가기

hello 자바!

아주 간단한 Spring Boot 배포

사이드 프로젝트 백엔드를 Spring Boot로 만들고 있는 데,
어느 정도 로컬에서 개발하고 난 뒤 테스트 서버(EC2)에 배포해두었다.

소스를 실행가능한 jar 파일로 만들어서 구동시키는 진짜 간단한 방법이라 정리할 게 별로 없지만,
테스트 서버 패치 겸, 같이 하는 다른 친구에게도 공유할 겸 써보았다.


1. 대상 소스를 jar 파일로 빌드

사이드 프로젝트에서 기능 단위로 개발 및 테스트를 마치면 back-develop에 머지해두기 때문에,
내 경우엔 back-develop 브랜치에 머지가 되는 시점의 소스!

이 소스를 jar 파일로 빌드한다.

gradle bootJar

빌드된 파일은 build/libs/--.jar 에 위치한다.

jar vs bootJar
gradle jar 로 만들면 -plain.jar로 생성되는 데,
이 생성되는 jar 를 no main manifest attribute 에러가 발생한다.
gradle tasks --all로 두 명령어의 설명을 보면 아래와 같다.

bootJar Assembles an executable jar archive containing the main classes and their dependencies.
jar Assembles a jar archive containing the main classes.

bootJar 은 메인 클래스들과 디펜던시를 포함해 실행 가능한 jar를, jar 은 메인 클래스들을 포함한 jar를 만든다. 여기서 실행 가능 여부, 즉 jar 파일이 실행가능하려면 메인 클래스와 디펜던시들이 들어있는 Manifest 파일을 만드는지 여부가 두 명령어의 차이이다.

2. jar 파일을 테스트 서버에 업로드

파일질라 또는 scp  명령어든 편한 방법으로 업로드한다.
앱이 위치할 곳으로 옮긴다.

3. jar 파일 실행

jar 파일을 각자 편한 방법으로 실행시킨다.
내 경우엔 도커가 편해서 자바 이미지에 jar 파일을 바인딩해 컨테이너를 실행했다.
물론 로컬에서 자바 이미지 베이스에 jar 파일을 포함해 백엔드 이미지를 빌드할 수도 있다.

아래는 사용한 도커 컴포즈 파일 예시

version: "3"
services:
        back:
                image: openjdk:11
                env_file:
                    - 필요하다면환경변수파일.env
                ports:
                    - 8080:8080
                volumes:
                    - jar파일이위치한디렉토리:/usr/src/myapp
                command: java -jar /usr/src/myapp/jar파일이름.jar
                restart: always

docker logs 컨테이너 이름으로 정상 동작하는지 확인한다.


nginx 나 ssl 설정은 투비컨티뉴드로
일단 끗! 

 

 

'hello 자바!' 카테고리의 다른 글

링크드 리스트로 브라우저 히스토리 구현하기  (0) 2021.05.13
링크드 리스트  (0) 2021.05.12
어레이 리스트  (0) 2021.05.12
컬렉션 인터페이스  (0) 2021.05.11