Spring
Spring-boot Profile 도커 Runtime 에 적용하기
스마트큐브
2021. 3. 23. 12:36
프로파일을 환경에 맞게 몇 개 미리 만들어 두고 도커를 실행하는 시점에 프로파일을 선택하고 싶었다.
역시 검색하니 쉽게 찾을수 있었다.
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