본문 바로가기

Back-End/Spring

Spring Boot와 Docker를 이용한 개발환경 구축하기

Spring Boot와 Docker를 이용한 개발환경 구축하기

내가 겪은 문제점 - Development 환경과 Staging,Prod 환경의 차이로 인한 문제 발생

Spring Boot 개발을 하다보면, Development 환경과 Prod 환경이 달라서 문제가 발생하는 경우가 있다. Service Discovery 역할을 하는 Eureka Server를 구축하면서 이 문제를 겪었다. Prod 환경에서의 Eureka 설정은 AWS config이고, Dev 환경에서의 Eureka 설정은 Local이기 때문에 개발 시점에서는 테스트를 해볼 수가 없었다. 

 Twelve-Factor 방법론 중 Development/Production 환경을 최대한 비슷하게 하라는 얘기가 있다.


내가 겪은 문제점 2 - Remote 환경을 Debugging은 할 수 없는가?

 Prod 환경과의 차이를 없애기 위해, Development 코드도 AWS EC2에 배포하였다고 가정해보자. 코드를 수정하며 확인을 해야하는데, 매번 Code Push -> Build를 해야할까? 


위의 문제들을 Spring boot autoreload와 Docker를 이용하여 해결할 수 있다. 


Spring Boot를 이용한 Remote AutoReload

 Docker 컨테이너에서 돌고 있는 Spring boot 어플리케이션에  변경된 코드를 바로 반영할 수 있는 기능을 Spring boot 1.3부터 제공해준다.


1. Spring-dev-tools를 build.gradle에 추가하기

dependencies {
compile("org.springframework.boot:spring-boot-devtools")
}


2.