Spring

Spring-boot Profile 도커 Runtime 에 적용하기

스마트큐브 2021. 3. 23. 12:36

프로파일을 환경에 맞게 몇 개 미리 만들어 두고 도커를 실행하는 시점에 프로파일을 선택하고 싶었다. 

역시 검색하니 쉽게 찾을수 있었다. 

browndwarf.tistory.com/46

 

Spring Boot Application을 Docker Image로 생성하기 - 1

이번 포스팅에서는 Spring Boot로 만들어진 Web Application을 Docker Image로 만들어서 docker hub에 push하는 과정을 정리해 보았다. 고맙게도 스프링 사이트에서 이 내용에 대해 정리를 잘 해주셨고(Link), 이.

browndwarf.tistory.com

나는  로컬/ 뉴질랜드 / 호주  용 이렇게 3개로 구분 하였다. 

spring:
  profiles: local

---
spring:
  profiles: prod-nz
  
  
---
spring:
  profiles: prod-au
 
 ...

application.yml 파일 

도커라이즈 할때 

FROM java:8
VOLUME /tmp

ADD build/libs/api-0.1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENV	USE_PROFILE local

ENTRYPOINT ["java","-Dspring.profiles.active=${USE_PROFILE}", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Dockerfile 파일 

 

마지막으로 gitlab 에서  도커 run 할때  ( .gitlab-ci.yml ) 

- docker run  -p 8001:8080 -d --restart always -e USE_PROFILE=prod-nz  ... 이런식으로 

 

그리고 특정 프로파일에서만 스케줄을 돌리고 싶은 경우는  
이런식으로 사용하면 된다. 

@Component
@Profile("prod-nz")
public class CronClass  {
 
  	@Scheduled(cron = "0 0 1  * * MON-FRI")
	public void job1() {
    
    }
}

 

와우 잘된다~ 

참고 자료 : 크론 표현식 https://emunhi.com/view/201807/30140115253