작성
·
183
1
volumes:
db_data: {}
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
위처럼 볼륨을 도커가 관리하게 하면 문제가 없지만
services:
db:
image: mysql:5.7
volumes:
- ./:/var/lib/mysql
지금처럼 특정위치를 지정 함면 mysql이 구동이 실패 됩니다.
이유가 있을까요?
특정 위치 말고 도커가 관리하는 볼륨을 쓰는게 더 좋은가요??
답변 1
0
안녕하세요.
도커 컴포즈 실행시 mysql의 볼륨을 호스트 컴퓨터의 디렉터리로 지정했을 때 컨테이너가 제대로 실행되지 않는 현상을 겪고 계시네요. 도커 컴포즈에서 자주 접하는 오류이므로 꼭 이해하고 넘어가시면 좋겠어요.
'./'는 도커 컴포즈를 실행하는 위치입니다. './'에는 서비스와 관련된 다양한 파일들이 존재할 텐데요. mysql의 데이터가 저장될 볼륨을 이 위치로 마운트하면, `/var/lib/mysql`의 파일들이 시스템의 파일을 덮어쓰게 됩니다. (진짜로 덮어쓰면 문제가 되니까 mysql 구동 단계에서 다른 파일들이 있다는 걸 감지해서 작동을 멈춥니다.)
따라서 ./data 디렉터리를 만든 후 ./data:/var/lib/mysql 처럼 지정하시면 문제가 해결될 거예요.
다만 로컬 호스트의 디렉터리에 마운트를 하시면 다른 문제들(git 저장소에 안 들어가게 신경써야 한다거나 실수로 파일 하나를 삭제한다거나)이 발생할 수 있으니, 가급적 도커가 관리하는 볼륨을 사용하시기를 추천합니다.
혹시 다른 문제를 겪으신다면 언제든 올려주세요. :)