이번엔 Docker Compose 파일을 검증하고, 마이크로서비스와 MySQL 데이터베이스 컨테이너 간의 연결을 성공적으로 설정하는 과정을 다룹니다. 이전 챕터에서 발생한 문제를 해결하고, 올바르게 컨테이너를 시작하는 방법을 설명합니다.
1. Docker Compose 파일 수정
- 이전 강의에서 Docker Compose 파일에 포함된 일부 오류를 수정합니다.
- Docker 이미지 태그를
S6
에서 S7
로 변경합니다. 각 마이크로서비스의 Docker 이미지가 올바르게 최신 버전의 이미지를 참조하도록 수정합니다.
2. Config Server의 불필요한 의존성 제거
config-server
서비스에서 rabbit
서비스에 대한 의존성을 제거합니다.
- 이전에 삭제한
rabbit
서비스를 여전히 참조하고 있었기 때문에 오류가 발생했습니다. 이를 수정하여 더 이상 사용되지 않는 의존성을 제거합니다.
3. Docker Compose 명령어 실행
- Docker Compose 파일을 수정한 후, 터미널에서 다음 명령어를 실행하여 컨테이너를 시작합니다:
docker-compose up
- 모든 데이터베이스 컨테이너가 정상적으로 시작된 후, 마이크로서비스 컨테이너가 시작됩니다.
4. 네트워크 설정 문제 해결
loans
및 cards
마이크로서비스에서 데이터베이스 연결 오류가 발생했습니다.
- 이 오류의 원인은 각 서비스의 데이터베이스 URL에 잘못된 포트 번호(3307, 3308)를 사용한 것이었습니다. Docker 네트워크 내에서 컨테이너 간 통신은 외부 포트를 사용할 필요가 없으므로, 모든 데이터베이스 URL에서 포트 번호를 3306으로 수정합니다.
- 외부 도구(예: SQL Electron)에서 데이터베이스에 접근하기 위해서는 외부 포트 매핑을 유지합니다.
5. Docker Compose 재실행
6. 프로덕션 및 QA 환경에 대한 Docker Compose 파일 복사
- Default 환경에서 사용한 Docker Compose 파일을 프로덕션(
prod
) 및 QA(qa
) 환경으로 복사합니다.
- 각 환경에 맞게
common-config.yml
파일을 수정하여 spring_profiles_active
값을 각각 prod
및 qa
로 설정합니다.
7. 컨테이너 상태 확인 및 로그 분석
- Docker Desktop에서 각 컨테이너의 상태를 확인합니다. 모든 컨테이너가 정상적으로 시작되고 있는지 확인합니다.
- 특정 컨테이너(예:
cards
또는 loans
)가 시작되지 않은 경우, 로그를 분석하여 문제를 파악합니다.
8. API 테스트 및 데이터베이스 검증
- Postman을 사용하여 API를 테스트합니다. 예를 들어, 계정 생성, 카드 생성, 대출 생성 등의 API를 호출하여 응답을 확인합니다.
- SQL Electron을 사용하여 데이터베이스에 실제로 데이터가 저장되었는지 확인합니다. 각 데이터베이스(
accountsDB
, loansDB
, cardsDB
)에 연결하여 테이블에 저장된 데이터를 조회합니다.
9. 외부 데이터베이스 사용 시의 설정 변경
- 만약 프로젝트에서 외부 개발 데이터베이스 또는 클라우드 데이터베이스를 사용하는 경우, Docker Compose 파일에서 로컬 데이터베이스 설정 대신 해당 환경의 데이터베이스 URL, 사용자 이름, 비밀번호를 환경 변수로 설정합니다.
10. 마무리 및 검증
- Docker Compose 파일이 올바르게 설정되었고, 모든 마이크로서비스가 MySQL 데이터베이스에 성공적으로 연결되었는지 확인합니다.
- 모든 설정이 완료되면, 최종적으로 마이크로서비스와 데이터베이스 간의 통신이 정상적으로 이루어지는지 검증합니다.
이 강의를 통해 Docker Compose를 활용하여 마이크로서비스와 MySQL 데이터베이스 간의 연결을 설정하고, 해당 설정이 올바르게 작동하는지 검증할 수 있었습니다. 이를 통해 실제 개발 환경에서 마이크로서비스를 안정적으로 운영할 수 있는 기반을 마련하게 되었습니다.