
저번 시간엔 Named Volume을 이용해서 DB를 유지하는 법에 대해서 알아봤다!
그런데 사실 어차피 DBMS가 있는 컨테이너를 생성해서 앱이 있는 컨테이너와 통신하게 할꺼니까 DB를 그런식으로 유지할 일은 별로 없을 것이다.
이번 시간에는 Bind mounts 에 대해 배울껀데, 마찬가지로 DB를 유지할 수 있는 또 다른 방법이긴 하지만 실제로는 그렇게 DB를 유지할 일은 없는(?)거다. 실제 사용에는 컨테이너에 추가 데이터를 제공할 때 사용한다고 한다.

일단 그 두개를 먼저 비교해보자. Bind Mounts는 Named Volumes과 달리 내가 호스트에 위치를 지정할 수가 있다.
Named Volume은 생성하면 볼륨들이 저장되는 위치에 자동으로 저장되니까 Docker가 선택한다고 하나보다.
나머지 두 개는 정확하게는 감이 안오지만 대충 이해한 바로는
바로 본론으로 가보자. 똑같이 컨테이너를 시작하는데, 이번엔 옵션들이 많다. 하나씩 차근차근 이해해보자.

-w /app - 아래에 입력하는 커맨드를 실행할 디렉토리 위치다-v "</path/to/data>:</usr/local/data>" - 바인딩할 마운트를 지정해주면 된다. 앞에는 컨테이너의 디렉토리, 뒤에는 내 로컬 호스트머신의 디렉토리를 적어주면 된다.sh -c "<script>" - -w 옵션으로 지정해준 working 디렉토리에 가서 실행할 스크립트를 써주면 된다
나의 경우 구분하기 쉽게 뒤에는 /docker_on_container 라는 경로와 내 로컬에 실제 코드가 저장된 곳을 바인딩 해주었다.

이제 이렇게 돼있던 게

코드를 이렇게 수정하면?

바로 실시간으로 바뀐다~ 왜냐면 우리가 실행한 스크립트 yarn run dev 는 nodemon 이라는걸로 실행되는데, 코드에 수정사항을 반영해서 바로바로 앱을 재시작해주는 라이브러리다. 그래서 내가 로컬에서 코드를 수정하면, 그게 컨테이너와 바인딩이 돼있기 때문에 수정사항이 바로 반영돼서 앱이 재시작되는 것이다!

이런식으로 하는 것은 로컬에서 개발환경으로 앱을 실행할 때 자주 쓰인다고 한다. 예를 들어 방금같이 Node.js에 앱을 실행하는 환경같은 경우, 호스트 머신에 따로 노드를 설치하지 않더라도 컨테이너를 실행시켜서 개발을 할 수가 있는것이다!