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

song4energy님의 프로필 이미지

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]

나만의 웹서비스 + 워드프레스 서비스 만들기2

docker volume 이름 관련 질문입니다

작성

·

445

0

나만의 웹서비스 + 워드프레스 서비스 만들기2 강의의 4분 30초 경을 보면, docker volume ls 수행 결과로 뜨는 volume name이 07_wordpress_complete_mydb 로 되어 있습니다. (/var/lib/docker/volumes 경로에서도 해당 이름임을 확인했습니다)

 

그런데 mysql 컨테이너에 대한 docker volume의 이름을 docker-compose.yml 에서 지정할 때는 mydb:/var/lib/mysql 로 했습니다. yml파일 내용만 보면, volume 이름이 그냥 mydb 인 것으로 생각됩니다.

 

07_wordpress_complete는 해당 yml 파일이 위치한 폴더의 이름일 텐데요,
혹시 yml 파일에서 지정한 volume명 앞에 자동으로 yml 파일이 위치한 폴더명이 붙어서 volume 이름이 생성되는 것인가요?

답변 1

0

안녕하세요. 답변 도우미입니다.

네, 맞습니다. Docker에서 docker-compose를 사용할 때, 볼륨 이름이나 컨테이너 이름 등에 프로젝트 이름이 자동으로 접두사로 붙는 경우가 흔합니다. 기본적으로 docker-compose는 현재 디렉토리의 이름을 프로젝트 이름으로 사용하는데, 이것이 볼륨 이름에 반영되기도 합니다.

예를 들어, 07_wordpress_complete 디렉토리에서 docker-compose up을 실행하면, mydb라는 이름을 가진 볼륨이 실제로는 07_wordpress_complete_mydb로 생성됩니다. 이렇게 되는 이유는 동일한 docker-compose.yml 파일 구성을 사용하더라도 다른 프로젝트(혹은 다른 디렉토리) 간의 충돌을 방지하기 위해서입니다.

docker-compose.yml 파일에서 직접 볼륨 이름을 지정할 때, 다음과 같이 설정하게 됩니다:

services:

  db:

    image: mysql

    volumes:

      - mydb:/var/lib/mysql

volumes:

  mydb:

여기서 mydb는 도커 컴포즈가 관리하는 볼륨의 이름으로, 실제 볼륨의 전체 이름은 프로젝트명_mydb 형태가 됩니다. 만약 프로젝트 이름을 디렉토리 이름이 아닌 다른 것으로 설정하고 싶다면, docker-compose -p <프로젝트 이름> 옵션을 사용하여 실행할 수 있습니다.

감사합니다.