이 챕터에서는 마이크로서비스를 Docker Compose 환경에서 실행하고 MySQL 데이터베이스와의 연결을 설정하는 방법에 대해 다룹니다. 로컬 시스템에서 사용하던 데이터베이스 설정을 Docker Compose 환경에 맞게 수정하며, Docker Compose 파일을 업데이트하여 MySQL 컨테이너와 마이크로서비스 간의 통신을 설정합니다.
accounts
, cards
, loans
)와 config-server
의 pom.xml
파일에서 Docker 이미지 태그를 S6
에서 S7
로 변경합니다.<configuration>
<to>
<image>eazybytes/${project.artifactId}:s7</image>
</to>
</configuration>
mvn compile jib:dockerBuild
Docker-compose.yml
파일을 수정하여 각 마이크로서비스와 데이터베이스 간의 연결을 설정합니다.accountsDB
라는 이름으로 MySQL 데이터베이스 컨테이너를 정의합니다:accountsDB:
image: mysql
container_name: accountsDB
ports:
- "3306:3306"
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
interval: 10s
timeout: 10s
retries: 10
start_period: 10s
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: accountsDB
extends:
file: common-config.yml
service: network-deploy-service
loansDB
와 cardsDB
서비스도 정의합니다.accounts
, loans
, cards
)에 대해 데이터베이스 URL, 사용자 이름, 비밀번호를 환경 변수로 설정합니다:environment:
SPRING_DATASOURCE_URL: jdbc:mysql://accountsDB:3306/accountsDB
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
depends_on:
accountsDB:
condition: service_healthy
common-config.yml
파일에 반복되는 설정을 이동시켜, Docker Compose 파일을 간소화합니다.image
, healthcheck
, MYSQL_ROOT_PASSWORD
등의 설정을 common-config.yml
에 정의하고, 각 데이터베이스 서비스에서 이를 확장합니다:microservice-db-config:
extends: network-deploy-service
image: mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost"]
interval: 10s
timeout: 10s
retries: 10
start_period: 10s
environment:
MYSQL_ROOT_PASSWORD: root
common-config.yml
파일을 업데이트하여 다른 환경에서 사용될 수 있는 설정을 추가합니다.docker-compose up -d
이 과정을 통해, Docker Compose 환경에서 MySQL 데이터베이스와 마이크로서비스 간의 통신을 설정하고, 설정이 올바르게 작동하는지 검증할 수 있습니다. 이를 통해 로컬 개발 환경뿐만 아니라, Docker Compose 또는 Kubernetes와 같은 컨테이너화된 환경에서도 마이크로서비스를 원활하게 운영할 수 있습니다.