이전까지는 전통적인 방식의 jar파일을 통해 host OS위에 동작하는 애플리케이션을 만들었습니다.
이제 Spring Cloud Config Server와 마이크로서비스들을 Docker 컨테이너로 배포하고, Docker Compose를 사용해 여러 서비스를 한번에 시작시키는 방법 등을 공부해보려 합니다.
먼저, v2-spring-cloud-config 디렉토리 내에 docker-compose라는 새 디렉토리를 생성합니다.
이 디렉토리 내에 default, qa, prod라는 세 개의 하위 디렉토리를 생성하여 각 환경별로 Docker Compose 파일을 관리합니다.
이전 섹션에서 사용한 Docker Compose 파일을 default 폴더로 복사하고, 기존의 이미지를 섹션 6에 맞게 업데이트합니다.
각 마이크로서비스(예: accounts, loans, cards)에 대한 Docker 이미지를 생성하기 위해 이미지 이름을 eazybytes/<서비스명>:S6로 변경합니다.
새로운 서비스로 config-server를 추가하고, Docker Compose 파일에 해당 서비스의 세부 사항을 입력합니다.
각 마이크로서비스가 Config Server에 연결할 수 있도록 환경 변수를 설정합니다.
spring.config.import와 같은 환경 변수는 대문자와 밑줄(_)을 사용하여 설정하며, config-server 서비스 이름을 사용하여 연결을 설정합니다.
기본적으로 spring_profiles_active를 사용하여 환경을 지정하고, spring_application_name을 사용하여 각 서비스의 이름을 설정합니다.
Docker Compose 파일에 각 서비스의 의존성을 명시합니다.
Config Server가 완전히 시작된 후에 다른 마이크로서비스들이 시작될 수 있도록 Docker Compose 설정을 조정합니다.
- Liveness는 컨테이너가 제대로 실행 중인지 확인하는 지표입니다. 이 확인을 통해 컨테이너가 비정상적으로 작동할 경우 재시작할 수 있습니다.
- Readiness는 컨테이너가 트래픽을 수신할 준비가 되었는지 확인하는 지표입니다. 이 확인을 통해 컨테이너가 준비되지 않았을 때 서비스로의 요청을 차단할 수 있습니다.
이 개념들은 Docker Compose에서 서비스 시작 순서를 제어하고, 서비스가 완전히 준비된 후에 다른 서비스들이 시작되도록 하는 데 사용됩니다.