2020. 10. 17. 15:10ㆍ클라우드/Docker
각 컴포넌트의 Configuration과 dependency등을 yml이라는 하나의 파일에 정의하고
이 파일에 작성된대로 도커에 올려주는(deploy해 주는) 툴
컨테이너 실행에 필요한 옵션을 docker-compose.yml이라는 파일로 관리
컨테이너 간 실행순서나 의존성도 관리 가능.
프로젝트 루트에 docker-compose.yml파일을 생성
version: "3"
services:
mongodb:
image: mongo
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
command: mongod --logpath=/dev/null
ports:
- 27017:27017
app:
image: to-do-springboot
ports:
- 5000:5000
links:
- mongodb
version: "3"
파일 규격 버전
자세한 내용은 compose 파일의 버전과 호환성을 안내한 공식 문서 참고
services:
실행하려는 컨테이너들을 정의
(Compose에서는 컨테이너 대신 서비스라는 개념을 사용함)
mongodb:
image: mongo
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
command: mongod --logpath=/dev/null # --quiet
ports:
- 27017:27017
mongodb:
mongoDB 서비스 이름을 mongodb로 정의
image:
mongodb 서비스에서 사용할 이미지를 정의
dockerHub의 공식 mongoDB 이미지를 사용했음
환경변수 설정
docker run 명령어의 --env, -e 옵션과 동일
아래 두 가지 환경변수를 설정했음
MONGO_DATA_DIR | 데이터 저장 경로 |
MONGO_LOG_DIR | 로그 저장 경로 |
volumes:
docker run 명령어의 --volume, -v 옵션과 동일
DB의 데이터를 로컬 컴퓨터에 저장
docker-compose.yml의 volumes에서는 상대경로 지정 가능 .
프로젝트 루트 아래의 data/db 에 저장
command:
실행 커맨드
docker run으로 앱 컨테이너를 실행할 때 가장 마지막에 적었던 명령어 부분
monbod 실행 옵션인 --logpath 지정
--logpath | 로그 저장 경로 및 파일명 |
ports:
포트 설정
docker run 명령어의 --publish, -p 옵션과 동일
app:
image: to-do-springboot
ports:
- 5000:5000
links:
- mongodb
app:
스프링 부트 서비스 이름을 app으로 정의
image:
app 서비스에서 사용할 이미지를 정의
to-do-springboot는 Dockerfile에서 지정했던 스프링 부트 app 이름
ports:
포트 설정
docker run 명령어의 --publish, -p 옵션과 동일
다른 서비스와 연결
links로 mongodb를 지정해야 도커 컨테이너가
"아, 이 컨테이너(to-do-springboot)는 옆 컨테이너인 mongodb를 사용하니까
이 컨테이너에서 오는 요청은 mongodb가 받아들여도 괜찮아."
라고 알아듣는다.
Reference
'클라우드 > Docker' 카테고리의 다른 글
Dockerfile의 ADD와 COPY의 차이 (1) | 2020.10.17 |
---|---|
Dockerizing Spring Boot Application (0) | 2020.10.04 |
Dockerfile (0) | 2020.10.04 |
hello world (0) | 2020.10.04 |
Docker Image (0) | 2020.10.01 |