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

Jinwoo Park님의 프로필 이미지

작성한 질문수

개발자를 위한 쉬운 도커

도커 컴포즈(Docker Compose) 기본

도커 컴포즈: volumes는 어떻게 적는 건가요

해결된 질문

24.09.02 08:36 작성

·

63

1

1000014274.jpg

 

도커 컴포즈 강의 중 스크린샷에 대한 질문이 2가지 있습니다.

Q1. 해당 스크린샷의 코드는 어디가면 찾아볼 수 있나요?

  • 깃헙의 Daintree-henry 유저의 리포지터리에서 찾아보려고 해도 찾아볼 수가 없어서 질문드립니다.

Q2. Yaml 코드에서 Volumes는 왜 2번 나오는 건가요?

  • 컨테이너 2개 각각의 image 바로 밑에 volumes라는 항목이 이미 존재하잖아요. (e.g. postgres_primary_data:/bitnami/postgresql)

  • 그런데 밑에서 보이는 또 다른 volumes 코드는 왜 존재하는 건가요?

volumes:
   postgres_primary_data:
   postgres_standby_data:

답변 2

0

데브위키님의 프로필 이미지
데브위키
지식공유자

2024. 09. 10. 08:29

Jinwoo Park님 안녕하세요. 데브위키입니다.

먼저 소스코드 링크를 전달 드립니다.

https://github.com/daintree-henry/build/blob/02-practice/08.multidb/docker-compose.yml

아래 명령어로 다운받으실 수 있습니다!

git clone https://github.com/daintree-henry/build.git
git switch 02-practice 

두 번째 질문의 volumes부분은 볼륨을 정의하는 부분입니다.

docker create volume postgres_primary_data

이렇게 볼륨을 생성하는 것과 동일합니다!

 

image 바로 아래에 컨테이너에 볼륨을 지정하는 부분은

docker run ... -v (볼륨명):(마운트포인트)

위 명령어에서 볼륨을 지정하는 부분과 동일합니다.

 

강의 들으시면서 더 궁금하신 부분이 있으면 편하게 질문해주세요!

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 04. 08:41

안녕하세요, 인프런 AI 인턴입니다.

Q1에 대한 직접적인 정보는 제공되지 않았습니다. 제공된 정보에는 도커 컴포즈와 관련된 스프링 부트 문서화 내용만 포함되어 있으므로, 깃헙 사용자 ‘Daintree-henry’의 리포지터리와 관련된 정보는 찾아드리지 못합니다.

Q2에 대해서 설명드리겠습니다.
Yaml 파일 내에 volumes가 두 번 나타나는 이유는, 첫 번째 경우에는 각 서비스에서 사용되는 볼륨을 정의하는 부분이며, 이는 해당 서비스(컨테이너)에 볼륨을 마운트하는 용도로 사용됩니다. 여기서 postgres_primary_data:/bitnami/postgresqlpostgres_primary_data라는 볼륨을 컨테이너의 /bitnami/postgresql 디렉토리에 마운트함을 의미합니다.

그 아래에 나타나는

volumes:
   postgres_primary_data:
   postgres_standby_data:

이 부분은 볼륨을 선언하는 곳으로, 여기서 볼륨의 실체를 정의합니다. 즉, 첫 번째 volumes에서 사용된 이름(postgres_primary_data, postgres_standby_data)에 대해 실제 볼륨을 생성하고 관리하는 부분입니다. 이렇게 별도로 볼륨을 선언해야 도커가 해당 볼륨이 외부 볼륨임을 인지하고, 데이터를 컨테이너 외부에서도 유지할 수 있게 됩니다. 이런 방식은 특히 다수의 컨테이너가 같은 볼륨을 공유해야 할 때 유용합니다.