MySQL 전환에 따른 Docker Compose 설정 검증 및 수정 작업

날아올라돼지야·2024년 8월 27일

이번엔 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. 네트워크 설정 문제 해결

  • loanscards 마이크로서비스에서 데이터베이스 연결 오류가 발생했습니다.
  • 이 오류의 원인은 각 서비스의 데이터베이스 URL에 잘못된 포트 번호(3307, 3308)를 사용한 것이었습니다. Docker 네트워크 내에서 컨테이너 간 통신은 외부 포트를 사용할 필요가 없으므로, 모든 데이터베이스 URL에서 포트 번호를 3306으로 수정합니다.
  • 외부 도구(예: SQL Electron)에서 데이터베이스에 접근하기 위해서는 외부 포트 매핑을 유지합니다.

5. Docker Compose 재실행

  • 수정된 Docker Compose 파일로 모든 컨테이너를 다시 시작합니다.
  • 기존에 실행 중이던 컨테이너를 중지하고 삭제한 후, Docker Compose 명령어를 다시 실행합니다:
    docker-compose down
    docker-compose up -d
  • -d 옵션을 사용하여 백그라운드에서 컨테이너를 실행합니다.

6. 프로덕션 및 QA 환경에 대한 Docker Compose 파일 복사

  • Default 환경에서 사용한 Docker Compose 파일을 프로덕션(prod) 및 QA(qa) 환경으로 복사합니다.
  • 각 환경에 맞게 common-config.yml 파일을 수정하여 spring_profiles_active 값을 각각 prodqa로 설정합니다.

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 데이터베이스 간의 연결을 설정하고, 해당 설정이 올바르게 작동하는지 검증할 수 있었습니다. 이를 통해 실제 개발 환경에서 마이크로서비스를 안정적으로 운영할 수 있는 기반을 마련하게 되었습니다.

profile
무슨 생각하며 사니

0개의 댓글