Monolith 예제인 TravelBuddy 애플리케이션에서 Flight 부분을 분해하여 구현한 마이크로서비스 예제입니다.
- 이론: Microservice란?
- Strangler Fig Pattern - FlightSpecial 서비스
- 실습: HotelSpecial 애플리케이션을 분리
- 부록: API Gateway
- 부록: CQRS 패턴
-
(optional) 컨테이너 볼륨 준비
'db'에 컨테이너 볼륨을 사용하고자 한다면 (호스트의 폴더를 마운트하지 않고)
export DB_VOLUME="db-data" docker volume create ${DB_VOLUME} # Check docker volume ls | egrep "DRIVER|${DB_VOLUME}"
컨테이너 볼륨을 지우거나 교체하려면
# replace export DB_VOLUME="db-data" docker volume rm ${DB_VOLUME} docker volume create ${DB_VOLUME}
-
데이터베이스 실행
docker-compose up --build -d db # Check docker-compose ps
-
DB 스키마 적용(혹은 데이터셋 포함)
docker-compose run --rm db-init
-
Clean-up (필요할 때만)
docker-compose stop db docker-compose rm -f db # Check docker-compose ps -a
volume (option)
# 마운트한 호스트 폴더 정리 rm -rf env/db/data # 컨테이너 볼륨 정리 docker volume rm ${DB_VOLUME:-db-data}
# 1. Package
./gradlew clean build
# 2. Run Application
./gradlew :interface:bootRun
# 1. (Optional) 환경변수
export APP_PORT=8081 # default: 8081
export DB_VOLUME="db-data" # 컨테이너 볼륨을 사용하는 경우
# 2. 컨테이너 이미지 빌드 및 실행
docker-compose build app
docker-compose up -d app
# 3. 컨테이너 로그 확인
docker-compose logs -t -f --tail=50 app
# 4. 정리
docker-compose rm app
docker-compose down
# Remove dangling images
docker rmi $(docker images -f "dangling=true" -q)
# Remove unused docker volumes
docker volume prune