jar 배포 환경변수 설정

송준희·2021년 7월 26일
0

우리가 spring boot로 개발할 때 application.properties에

spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}

같이 외부에 노출하면 안되는 특정 변수들을 환경변수로 설정한다.

하지만 이 상태로 jar 파일을 만들면 환경변수들이 주입되지 않아 실행을 하지 못하게 된다.
배포할 때마다 모든 환경변수값들을 실제 값으로 바꿔서 jar 파일로 만들고 원상태로 돌릴 수 있겠지만 이 방법은 너무 비효율적이다.

어쩌피 환경변수값은 한번 설정되면 자주 바뀌지 않기 때문에 배포 서버에 실제 값이 적힌 application.properties 파일을 올려놓고 jar파일을 배포할 때 이 파일을 참조하게 하는 방식이 훨씬 효율적이고 편하다.

배포할 때 --spring.config.location=./application.properties 옵션만 추가하면 된다.

다음은 내가 배포할 때 쓰는 명령어로 이미 실행중인 jar의 port 번호를 찾아서 종료하고 새로 배포한 뒤 로그까지 띄운다.

kill -9 `netstat -ntlp | grep java | gawk '{print $7}' | grep -o '[0-9]*'` && nohup java -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./gc.log -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:NumberOfGCLogFiles=100 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./annotation.hprof -jar annotation-1.0.0.jar --spring.config.location=./application.properties &


clear && tail -n 0 -f nohup.out
profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글