사이드 프로젝트 백엔드를 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 |