왜 Docker가 필요했을까

<aside> 💡 개발, 배포환경을 동일하게 맞추고 싶었다.

</aside>

우리는 개발 경험이 별로 없기 때문에... 익숙한 개발 환경을 먼저 구성하고, 개발을 진행하면서 인프라를 바꿔주는 식으로 진행되었다.

따라서, 어느정도 개발이 진행된 후에 nginx를 WS, reverse-proxy로 사용하는 배포 환경을 구성했다. 그 이후에 로그인 기능을 개발하면서 JWT를 session storage에서 cookie에 담기로 변경이 이루어졌다. 이 때 처음 겪어보는 samesite규정을 만나면서 CRA를 https로 실행하고, fetch의 옵션을 조절하면서 해결할 수 있었지만... 개발 환경도 배포 환경과 똑같이 nginx를 사용하는 식으로 환경을 맞추고 싶었다.

<aside> 💡 모두가 따로 nginx를 따로 구동해주는 것보다 한번 설정해놓으면 누구나 동일한 환경으로 실행되게 하고싶었다.

</aside>

Docker?

<aside> 💡 docker란 container라는 가상 환경에 실행되는 프로세스를 실행하도록 해준다.

</aside>

여기서 VM과 비슷한 기술이라고 생각할 수 있지만, 차이점이 명확하다.

  1. VM은 HW를 SW적으로 emulating하여 새로운 HW환경을 SW적으로 만들지만,

    docker는 그저 process를 독립된 file system안에서 실행되게 할 뿐이다.

  2. docker는 새로운 OS전부를 가상으로 만들지 않는다.

따라서, VM보다 적은 overhaed를 가지고 독립된 실행환경을 보장받을 수 있다.

기본 개념

Docker Compose