728x90
반응형
바인드 마운트 (bind mount) 시작하기
바인드 마운트(Bind Mount)를 활용한 개발 환경 구성
바인드 마운트 개념
특징
- 호스트 머신의 특정 경로와 컨테이너 내부 경로 직접 연결
- 실시간 코드 변경 반영 가능
- 개발 중 소스 코드 수정에 적합
일반 볼륨과의 차이
- 경로 지정 : 호스트 경로 직접 지정 가능
- 접근성 : 호스트에서 직접 파일 편집 가능
- 용도 : 개발 중 소스 코드 변경 반영에 적합
바인드 마운트 설정
기본 명령어
# 익명 볼륨
docker run -v 컨테이너 내의 경로
# 명명 볼륨
docker run -v 볼륨이름 : 컨테이너 내의 경로
# 전체 경로 사용 (bind mount)
docker run -v /호스트경로:/app 이미지명
-- 볼륨 이름에 호스트경로 붙인것이 바인드 마운트
# 단축 명령어
# macOS/Linux
docker run -v $(pwd):/app 이미지명
# Windows
docker run -v "%cd%":/app 이미지명
node_modules 문제 해결
# node_modules를 위한 익명 볼륨 추가
docker run -v /호스트경로:/app -v /app/node_modules 이미지명
- -v /app/node_modules는 Dockerfile에 VOLUME ['/app/node_modules'] 명령어 추가와 동일. 하지만 run 명령어로 사용하는것 추천
명령어 예시
# node_modules를 위한 익명 볼륨 추가
docker run -d -p 3000:80 --rm --name feedback-app
-v 볼륨이름:컨테이너 저장 경로(/app/feedback)
-v /호스트경로:/app -v /app/node_modules 이미지명 [아이디이름]
이런식으로 명령어를 입력하게 되면
- detached 모드
- 포트 설정
- 컨테이너가 종료되면 자동 삭제
- 컨테이너 이름 설정 = feedback-app
- 명명볼륨 = 컨테이너에서 저장하는 경로를 특정 볼륨이름으로 지정 = 명명 볼륨으로서 컨테이너를 삭제했다가 다시 생성/실행해도 그곳의 데이터를 컨테이너가 참조할 수 있다 (데이터 안지워진다)
- 바인드 마운트 = 로컬 호커스 머신의 실제 프로젝트 경로를 컨테이너가 바라보고 있어서 실시간 코드 변화를 적용할 수 있어진다 (로컬로 컨테이너를 덮어씌움). 다만 로컬에는 node_module이 없어서
- 익명볼륨 = 익명 볼륨을 추가해서 노드 모듈만 바인드 마운트에서 예외처리시켜서 컨테이너가 노드모듈을 바라볼 수있게 함
그리고 파일을 만들고 저장하면 확인할 수 있고, 컨테이너를 종료/삭제 후 다시 키더라도 저장했던 파일 확인할 수있다.
동시에 소스코드의 변경을 실시간으로 확인할 수도 있다!
하지만 노드에 의해 실행되는 자바스크립트 같은 경우에는 수정 후 실시간으로 확인하기 위해서는 추가 작업이 필요하다
주의사항
경로 설정
- 절대 경로 사용 필요
- Docker 설정에서 공유 폴더 확인
- WSL 사용 시 별도 설정 불필요
볼륨 충돌 해결
- 더 구체적인 경로가 우선순위
- node_modules 같은 특수 폴더는 익명 볼륨으로 처리
성능 최적화
- 필요한 폴더만 바인드 마운트
- 개발 환경에서 주로 사용
이러한 바인드 마운트 설정으로 개발 시 코드 변경사항을 실시간으로 확인하며 작업할 수 있습니다.
참고
https://www.udemy.com/course/docker-kubernetes-2022
728x90
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[57] 읽기 전용 볼륨 살펴보기 (0) | 2025.02.23 |
---|---|
[55] NodeJS 특화 조정 : 컨테이너에서 Nodemon 사용하기 (0) | 2025.02.22 |
[50] 명명된(name) 볼륨으로 구조하기! (0) | 2025.02.22 |
[47, 48] 볼륨 소개하기 (0) | 2025.02.20 |
[46] 데모 앱 구축 & 이해하기 (0) | 2025.02.20 |
댓글