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

황영롱님의 프로필 이미지

작성한 질문수

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

Dockerfile 작성하기

여러 컨테이너에서 동일 컨테이너를 공유할땐 어떻게 구성해야하나요?

작성

·

223

0

안녕하세요. 여러 마이크로서비스에서 동일한 db를 공유할 경우는 어떻게 구성하는지 궁금합니다.

일단 동일 network로 db컨테이너와 마이크로서비스 컨테이너를 run하고 실행한 컨테이너명으로 요청하도록은 알겠는대

 

docker compose를 이용해서 여러 마이크로서비스가 같은 db 컨테이너를 어떻게 참조할 수 있는지 궁금합니다.

답변 1

0

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

여러 마이크로서비스가 동일한 DB 컨테이너를 참조하고자 할 때, Docker Compose를 이용하여 설정할 수 있습니다. 한 애플리케이션에서 compose.yaml 파일을 생성한 후, 다른 애플리케이션에서 spring.docker.compose.file 설정 속성을 사용하여 이 compose.yaml 파일을 참조하도록 할 수 있습니다.

또한, spring.docker.compose.lifecycle-management 설정은 기본값이 start-and-stop이지만 start-only로 설정하는 것이 좋습니다. 이렇게 설정함으로써 한 애플리케이션을 종료해도 나머지 실행 중인 애플리케이션들에 대한 공유 서비스가 종료되는 것을 방지할 수 있습니다. 단, 모든 애플리케이션이 종료되면 서비스가 계속 실행 상태로 남아 있다는 점을 유의해야 합니다. 이 경우, 서비스를 수동으로 종료하려면 compose.yaml 파일이 있는 디렉토리에서 커맨드라인에 docker compose stop을 실행합니다.

추가 정보는 스프링 부트 공식 문서에서 확인하실 수 있습니다:
- 공식 문서 URL: Spring Boot Reference Documentation - Sharing services between multiple applications

DB 컨테이너와 마이크로서비스 컨테이너가 같은 네트워크에 있을 때, 해당 컨테이너 이름을 사용하여 서비스 간 연결을 설정할 수 있으며, Docker Compose의 compose.yml 파일을 통해 각 서비스를 정의하고 관리할 수 있습니다.