728x90
이전 글 : docker, nginx 사용하여 로드 밸런싱, 무중단 배포하기
하나의 서비스를 할 때 웹 서버, 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
'Docker' 카테고리의 다른 글
[도커] Docker Hub에 이미지 올리기 (1) | 2019.12.31 |
---|---|
[도커] docker, nginx 사용하여 로드 밸런싱, 무중단 배포하기 (0) | 2019.12.30 |