[도커] docker-compose 사용 예시
Docker

[도커] docker-compose 사용 예시

728x90

이전 글 : docker, nginx 사용하여 로드 밸런싱, 무중단 배포하기

 

docker, nginx 사용하여 로드 밸런싱, 무중단 배포하기

로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. (출처 : https://ko.wikipedia.org/wiki..

leveloper.tistory.com

 

 

하나의 서비스를 할 때 웹 서버, api 서버, DB 등 여러 개의 컨테이너를 실행하는데 이를 하나 하나 관리한다는 건 참으로 불편한 일이다. 이전 글에서 3개의 서버로 로드 밸런싱을 하기 위해서 총 4개의 컨테이너를 사용했다. 사용할 컨테이너가 늘어나면 늘어날 수록 신경써야 할 부분이 많아진다. 이를 편리하게 통합 관리해줄 수 있는 도구가 docker compose이다. 

 

docker compose install

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && sudo python3 get-pip.py

sudo pip3 install docker-compose

docker-compose --version // 버전 확인

 

docker-compose.yml 작성

docker-compose 는 Python 으로 작성되어 있기 때문에 설정파일은 .yml 형식을 따른다.

version: '3'

services:
  nginx:
    container_name: node_nginx
    build: ./nginx
    ports:
      - 3000:80
    depends_on:
      - app-1
      - app-2
      - app-3
            
  app-1:
    container_name: node_server_1
    image: node_server:test
    ports:
      - 3000
            
  app-2:
    container_name: node_server_2
    image: node_server:test
    ports:
      - 3000
            
  app-3:
    container_name: node_server_3
    image: node_server:test
    ports:
      - 3000
            

 

nginx/nginx.conf 수정

docker compose 파일에 맞게 nginx.conf 파일도 수정해준다. 

 ...

  upstream node-app {
    least_conn;
    server app-1:3000 weight=10 max_fails=3 fail_timeout=30s;
    server app-2:3000 weight=10 max_fails=3 fail_timeout=30s;
    server app-3:3000 weight=10 max_fails=3 fail_timeout=30s;
  }

  ...

 

docker-compose 실행

docker-compose up -d // -d 옵션은 백그라운드 실행

 

localhost:3000에 접속해보면 새로고침 할때마다 다른 서버로 연결되는 것을 확인할 수 있다.

 

도커 컴포즈에 관한 자세한 내용은  도커 컴포즈를 활용하여 완벽한 개발 환경 구성하기 글을 참고하도록 하자.

728x90