작성
·
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 <프로젝트 이름>
옵션을 사용하여 실행할 수 있습니다.
감사합니다.