인프런 커뮤니티 질문&답변

backboss님의 프로필 이미지
backboss

작성한 질문수

도커 쓸 땐 필수! 도커 컴포즈

볼륨 질문 드립니다.

작성

·

184

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 저장소에 안 들어가게 신경써야 한다거나 실수로 파일 하나를 삭제한다거나)이 발생할 수 있으니, 가급적 도커가 관리하는 볼륨을 사용하시기를 추천합니다.

혹시 다른 문제를 겪으신다면 언제든 올려주세요. :)

 

backboss님의 프로필 이미지
backboss

작성한 질문수

질문하기