docker compose에서 서로 다른 container가 같은 volume을 공유하는 방법

Su Bak
3 min readMar 16, 2022
Photo by Markus Winkler on Unsplash

Docker compose를 사용하고 있다면 이미 여러 컨테이너를 사용하고 있다는 뜻일 것입니다.

이 여러 컨테이너들은 DB일 수도 있고 웹 애플리케이션일 수도 있겠죠.

그런데 만약 서로 다른 컨테이너들이 하나의 volume을 공유해야한다면 어떻게 해야할까요?

방법은 매우 간단합니다. 바로 docker-compose.yml 설정 파일에서 volumes란 설정을 사용하면 되는데요.

먼저 nodejs라는 컨테이너와 db라는 컨테이너가 있다고 가정해보겠습니다.

docker-compose.yml

파일을 아래와 같은 상태입니다.

services:
nodejs:
build:
context: .
volumes:
- .:/usr/src/app
ports:
- “80:80”
db:
build:
context: ./db
volumes:
- .:/var/lib/mysql
ports:
- “6630:3306”

위의 예시를 보시면 nodejs와 db 컨테이너 둘 다 volumes 라는 항목이 명시되어 있습니다.

하지만 현재는 같은 volume을 사용하는 것이 아니면 별도의 volume으로 되어있어서 서로 다른 파일 시스템으로 이루어진 상태입니다.

이 두 컨테이너가 같은 volume을 사용해야 한다면 먼저 설정 파일 맨 아래에 공유할 volume의 이름을 추가해줍니다.

volumes:
shared-data:

shared-data는 제가 임의로 지정한 이름이며 여러분이 원하시는데로 이름은 변경하셔도 됩니다.

공유할 volume을 추가했으니 nodejs와 db컨테이너에서 shared-data 볼륨을 사용하도록 지정해주면 됩니다.

services:
nodejs:
build:
context: .
volumes:
- shared-data:/usr/src/app
ports:
- “80:80”
db:
build:
context: ./db
volumes:

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge