Docker Compose

2020. 10. 17. 15:10클라우드/Docker

Docker Compose

각 컴포넌트의 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"

version:

파일 규격 버전

자세한 내용은 compose 파일의 버전과 호환성을 안내한 공식 문서 참고

 

services:

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 이미지를 사용했음

 

enviroment:

환경변수 설정

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:

다른 서비스와 연결

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