기존의 로컬 환경은 docker-compose를 이용하여 서버를 실행하였고 로컬과 볼륨을 공유하여 개발을 한다는 특징이 있다. 이러한 개발환경은 다음과 같은 장점을 지닌다.
COPY
나 ADD
를 사용할 경우에 이미지에 이미 내용이 고정되어 있다보니 개발하는 코드가 효율적으로 반영되기가 어렵다.하지만 위의 상황을 하게되면 kubernetes를 이용한 배포과정에서 다음과 같은 발생하게 된다.
minikube에서 local에 존재하는 container를 사용하기 위해서 추가적인 작업이 필요하다.
eval $(minikube docker-env)
docker build .
→ 위의 두 과정을 거치면 빌드된 이미지를 minikube의 yaml에서 사용이 가능하다.
단, 이미 빌드가 된 상태의 docker image를 가져오는 것이 아닌 minikube 환경이 동작하는 상태에서 docker로 빌드한 이미지가 minikube가 인지할 수 있는 이미지 환경에 등록이 되는 것이다.
로컬환경에서의 배포 구조이다. elasticsearch의 경우는 제거를 한 상황이다.
개발 환경의 경우는 docker-compose를 이용한 환경이 개발 상황에서는 가장 접합한 것으로 판단하였다. 그 이유는 다음과 같았다.