이 챕터에서는 모든 마이크로서비스와 Config 서버의 Docker 이미지를 생성하고 이를 Docker Hub에 배포하는 과정을 다룹니다. 각 과정별로 상세히 들어가 보겠습니다.
각 마이크로서비스와 Config 서버의 Docker 이미지를 생성하기 위해 Jib 플러그인을 사용합니다. Jib는 Maven 또는 Gradle 프로젝트에서 컨테이너 이미지를 쉽게 빌드할 수 있도록 도와주는 도구입니다.
1.1. Accounts 마이크로서비스의 Docker 이미지 생성:
accounts
마이크로서비스의 pom.xml
파일이 위치한 디렉터리에서 터미널을 열고 다음 명령어를 실행합니다.mvn compile jib:dockerBuild
accounts
마이크로서비스의 Docker 이미지를 생성하며, 태그는 S6
으로 지정됩니다.1.2. Cards 마이크로서비스의 Docker 이미지 생성:
cards
마이크로서비스의 pom.xml
파일이 위치한 디렉터리에서 터미널을 열고 동일한 명령어를 실행합니다.mvn compile jib:dockerBuild
cards
마이크로서비스의 Docker 이미지를 생성하며, 태그는 S6
으로 지정됩니다.1.3. Loans 마이크로서비스의 Docker 이미지 생성:
loans
마이크로서비스의 pom.xml
파일이 위치한 디렉터리에서 동일한 명령어를 실행합니다.mvn compile jib:dockerBuild
loans
마이크로서비스의 Docker 이미지를 생성하며, 태그는 S6
으로 지정됩니다.1.4. Config 서버의 Docker 이미지 생성:
pom.xml
파일에 Jib 플러그인을 추가합니다.pom.xml
에 추가합니다.pom.xml
파일이 위치한 디렉터리에서 동일한 명령어를 실행합니다.mvn compile jib:dockerBuild
S6
으로 지정됩니다.2.1. 생성된 Docker 이미지 확인:
docker images
명령어를 실행하여 생성된 이미지를 확인할 수 있습니다.2.2. 불필요한 Docker 이미지 제거:
S4
)에서 사용된 Docker 이미지를 삭제합니다.3.1. Docker Hub에 이미지 푸시:
docker image push docker.io/eazybytes/accounts:S6
accounts
마이크로서비스의 Docker 이미지를 Docker Hub에 푸시합니다.loans
, cards
, config-server
이미지를 차례로 푸시합니다.3.2. Docker Hub에서 푸시된 이미지 확인:
S6
태그가 올바르게 적용되었는지 확인합니다.이와 같은 과정을 통해 Docker 이미지를 생성하고, 원격 저장소에 저장하여 Docker Compose로 쉽게 관리하고 배포할 수 있습니다.
이제 Docker Compose 파일을 사용하여 모든 컨테이너를 실행하고, 설정 변경이 Docker 환경에서도 정상적으로 작동하는지 확인하는 과정을 자세히 설명하겠습니다.
docker-compose up -d
docker ps
Postman을 열고 각 마이크로서비스의 API를 호출하여 정상적으로 동작하는지 확인합니다.
예를 들어, Accounts 마이크로서비스의 /api/build-info
엔드포인트를 호출하여 3.0
버전 정보가 반환되는지 확인합니다. 이는 기본 프로파일이 활성화되어 있음을 의미합니다.
또한, /api/contact-info
엔드포인트를 호출하여 기본 프로파일에서 제공하는 설정 정보가 반환되는지 확인합니다.
필요에 따라 Loans 및 Cards 마이크로서비스에 대해서도 동일한 테스트를 수행합니다.
hookdeck listen
명령어를 실행하여 Webhook을 청취하도록 설정합니다. accounts.yml
파일의 설정을 변경합니다. 예를 들어, docker
값을 local
로 변경하고 커밋합니다.localhost
를 사용하여 RabbitMQ에 연결하려고 시도하면 실패할 수 있습니다.spring.rabbitmq.host
설정을 localhost
대신 rabbit
서비스 이름으로 설정합니다.docker-compose down
명령어를 사용하여 모든 컨테이너를 중지하고 삭제한 뒤, docker-compose up -d
명령어로 다시 컨테이너를 실행합니다./api/contact-info
엔드포인트를 다시 호출하여 변경된 설정이 자동으로 반영되었는지 확인합니다.docker
값이 local
값으로 변경된 것을 확인할 수 있습니다.이 과정을 통해 Docker Compose를 사용하여 컨테이너화된 마이크로서비스의 설정 변경이 Docker 환경에서 자동으로 반영되는지 확인할 수 있습니다.