순서
- 각 마이크로 서비스의 yaml 파일들은 docker 프로파일을 작성시켜놓는다.
- 마이크로 서비스 루트 폴더 마다 Dockerfile 을 작성한다.
- 최상위 루트 프로젝트에 docker-compose.yml 파일로 관리시킬 서비스를 기술한다.
- Jar 파일로 각 서비스를 빌드 ( 최상위 폴더에서 공통 빌드 ) 시키고 docker-compose 로 빌드한다.
Application.yml 파일에 Spring Profile 기술
- yaml 파일은 - - - 를 기술하면 하나의 yaml 파일에 여러개의 프로파일을 놓아둘 수 있다.
---
spring:
profiles: docker
server:
port: 8080
app:
product-service:
host: product
port: 8080
recommendation-service:
host: recommendation
port: 8080
review-service:
host: review
port: 8080
각 서비스 마다 Dockerfile 을 기술하며 정리했던 Dockerfile 과 같은 openjdk:12.0.2 기반이다.
최상위 루트 프로젝트에 docker-compose.yml 파일 작성
- 최상위 프로젝트에서 하위프로젝트까지 한번에 빌드시킨다.
- services : 관리할 서비스.
- product, recommendation... : 각 컨테이너의 호스트이름, 마이크로 서비스의 이름
- build : Dockerfile 위치.
- mem_limit : 컨테이너 메모리 제한
- environment : 컨테이너 실행시 적용시킬 환경 변수
- port : HOST 와 바인딩할 포트, port를 기술하지 않으면 외부에서 접근할 수 없다.
version: '2.1'
services:
product:
build: microservices/product-service
mem_limit: 350m
environment:
- SPRING_PROFILES_ACTIVE=docker
recommendation:
build: microservices/recommendation-service
mem_limit: 350m
environment:
- SPRING_PROFILES_ACTIVE=docker
review:
build: microservices/review-service
mem_limit: 350m
environment:
- SPRING_PROFILES_ACTIVE=docker
product-composite:
build: microservices/product-composite-service
mem_limit: 350m
environment:
- SPRING_PROFILES_ACTIVE=docker
ports:
- "8080:8080"
docker-compose 로 이미지 빌딩
- 이미지 네이밍 컨벤션은 다음과 같다.
- [Root-proj] _ [Module - name]
docker-compose build
#확인
docker images | findstr [root-Project-name]
docker-compose 로 빌드한 이미지 한꺼번에 실행, 종료, 로깅
- up 키워드로 관리하는 이미지들을 컨테이너로 띄우며 -d 등의 옵션도 지정가능하다.
- 로그를 확인하는 것도 동일하게 logs 를 사용한다.
## 구동 키워드는 up
docker-compose up -d
# 터미널을 유지하는 -f 옵션, logs 키워드로 로그를 본다.
docker-compose logs -f
# --tail=? 옵션으로 최신자 로그 확인가능
docker-compose logs -f --tail 0
# 하나의 서비스 명을 확인하려면 이름을 붙여준다.
docker-compose logs -f [name] [name] ...
API 호출
- curl , jq 로 호출, 로그확인
# 새로운 로그부터 확인
docker-compose logs -f --tail 0
# curl , jq 로 호출
curl http://localhost:8080/product-composite/123 -s | jq .
Docker-compose 의 로그 화면
응답 내용의 JSON 파싱 화면
마무리
# down 은 docker-compose 에서 관리 중인 컨테이너를 중지하고 종료시킨다.
docker-compose down
'Docker 작업' 카테고리의 다른 글
Docker Tool Box 윈도우 공유 폴더 마운트 (0) | 2021.01.24 |
---|---|
도커 툴박스 포트 포워딩 (0) | 2021.01.23 |
OpenJDK 12.0.2 기반 Fat.jar 도커이미지 빌딩 (0) | 2021.01.01 |
Docker 컨테이너의 JVM 할당량 확인해보기 (0) | 2021.01.01 |
Docker CPU 메모리 할당량, 최대 제한량 확인 (0) | 2021.01.01 |