10.1.도커 컴포즈로 여러 개의 애플리케이션 배포하기

도커 컴포즈 프로젝트(project)

  • 도커 컴포즈는 도커 리소스가 어떤 애플리케이션의 일부인지 아닌지를 판정하기 위해 프로젝트(project)라는 개념을 사용한다.
  • 프로젝트 이름의 기본값은 도커 컴포즈 파일이 들어 있던 디렉터리명으로, 이를 리소스의 이름에 접두사로 붙이고, 컨테이너 이름에는 번호를 접미사로 붙인다.
  • ex) 컴포즈 파일이 포함된 디렉터리명이 app1, 서비스가 web, 볼륨이 disk
  • app1_web_1
  • app1_web_2
  • app1_disk
  • 컨테이너 이름 뒤에는 번호가 붙기 때문에 스케일링에도 대응할 수 있다.

도커 컴포즈로 여러 개의 애플리케이션 실행

  • 같은 애플리케이션을 여러 벌 실행하고 싶다면 기본값을 수정해야 한다.
  • 컴포즈가 사용하는 프로젝트 이름을 바꾸는 방법으로 단일 도커 호스트에 같은 애플리케이션을 여러 벌 실행시킬 수 있다.
001)  docker-compose -f ./todo-list/docker-compose.yml up -d
002) [+] Running 2/2
003)   Network todo-list_app-net       Created                                                                0.0s 
004)   Container todo-list-todo-web-1  Started                                                                0.3s 
005)  
006)  docker-compose -f ./todo-list/docker-compose.yml -p todo-test up -d
007) [+] Running 2/2
008)   Network todo-test_app-net       Created                                                                0.0s 
009)   Container todo-test-todo-web-1  Started                                                                0.3s 
  1. 006: -p 플래그를 사용하여 프로젝트 이름 지정

  2. container port 부명령을 사용하면 컨테이너의 공개된 포트를 알려주므로 애플리케이션의 포트도 알 수 있다.

001)  docker container ls --all --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}" 
002) CONTAINER ID   NAMES                  IMAGE                   STATUS
003) 413ef4bc9a46   todo-test-todo-web-1   diamol/ch06-todo-list   Up 2 minutes
004) 2f2bfb325fe8   todo-list-todo-web-1   diamol/ch06-todo-list   Up 2 minutes
005)  
006)  docker container port todo-test-todo-web-1
007) 80/tcp -> 0.0.0.0:64349
008)  docker container port todo-test-todo-web-1 80
009) 0.0.0.0:64349
  1. 006: 컨테이너의 80 포트가 호스트 머신의 64349 포트로 공개 되어있다.
  2. 008: 컨테이너의 포트 번호를 지정하여 공개된 호스트 머신의 포트를 알 수도 있다.

한계

  • 무작위로 정해진 공개 포트를 일일이 찾아야 하는 것은 운영 팀에게나 테스트 팀에게나 바람직한 일이 아니다.
  • 컴포즈 파일을 복사해 필요한 부분만 수정하는 방법도 가능하겠지만, 컴포즈가 제공하는 기능 중에 더 좋은 방법이 있다.
  • 그것은 설정을 오버라이드하는 것이다.

links

social