Section6 : Docker Compose: 우아한 다중 컨테이너 오케스트레이션

tein·2022년 7월 26일
0

도커 & 쿠버네티스

목록 보기
8/14

데이터베이스, 백엔드, 프론트엔드 이 세 서버의 통신을 위해 같은 네트워크에 올리고, 데이터 저장을 위해 볼륨을 지정하는 등의 방식은 개발자가 많은 커맨드를 작성해야하는 점이 불편하다.

Docker Compose를 사용하면 이러한 불편함을 해소할 수 있다.


  • Docker Compose란, 복수의 컨테이너로 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여 간단히 관리하게 해주는 툴이다.
  • Docker Compose를 사용하면 'docker build'와 다수의 'docker run' 명령을 대체할 수 있다.
  • 'docker build' 명령과 다수의 'docker run'을 하나의 구성 파일로 가진다.
  • 모든 서비스와 모든 컨테이너를 즉시 시작하고 필요하다면 이미지 빌드까지 해주는 Orchestration 명령 set이다.
  • Docker compose를 쓰면 컨테이너 간 연결이 쉬워진다.

Docker Compose는 기본적으로 다음의 3스텝의 프로세스를 사용한다.

  1. 각각의 컨테이너의 Dockerfile 작성
  2. docker-compose.yml 파일을 작성하고, 각각 독립된 컨테이너의 실행 정의를 실시
  3. $] docker-compose up 실행하여 docker-compose.yml 파일로 정의한 컨테이너 개시

강의에서 사용된 docker-compose.yml 샘플은 다음와 같다.

version: "3.8"
services:
  mongodb:
    image: 'mongo'
    volumes: 
      - data:/data/db
    env_file: 
      - ./env/mongo.env
  backend:
    build: ./backend
    ports:
      - '80:80'
    volumes: 
      - logs:/app/logs
      - ./backend:/app
      - /app/node_modules
    env_file: 
      - ./env/backend.env
    depends_on:
      - mongodb
  frontend:
    build: ./frontend
    ports: 
      - '3000:3000'
    volumes: 
      - ./frontend/src:/app/src
    stdin_open: true
    tty: true
    depends_on: 
      - backend

volumes: 
  data:
  logs:    
  • restart : docker container가 다운 되었을 경우, 항상 재시작하라는 설정
  • volumes : 볼륨 설정. 여러개의 볼륨을 지정할 수 있고, 리스트처럼 작성하면 된다.
  • enviroment : env 옵션. env_file옵션으로 환경변수 값이 들어있는 파일을 읽을 수 있다.
  • networks : docker container 간의 네트워크 분리를 위해 추가로 설정할 수 있다.

  • $] docker-compose up : docker-compose 실행
  • $] docker-compose stop : docker-compose 중지
  • $] docker-compose down : docker-compose 삭제
  • $] docker-compose logs : docker container 의 모든 로그 확인
  • $] docker-compose config : 실행중인 docker compose의 .yml 파일 설정 확인
  • $] docker-compose exec 컨테이너명 명령 : 실행중인 docker container에 명령어를 실행
profile
내 시행착오 모음집

0개의 댓글