도커 컴포즈 프로젝트(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
-
006:
-p
플래그를 사용하여 프로젝트 이름 지정 -
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
- 006: 컨테이너의 80 포트가 호스트 머신의 64349 포트로 공개 되어있다.
- 008: 컨테이너의 포트 번호를 지정하여 공개된 호스트 머신의 포트를 알 수도 있다.
한계
- 무작위로 정해진 공개 포트를 일일이 찾아야 하는 것은 운영 팀에게나 테스트 팀에게나 바람직한 일이 아니다.
- 컴포즈 파일을 복사해 필요한 부분만 수정하는 방법도 가능하겠지만, 컴포즈가 제공하는 기능 중에 더 좋은 방법이 있다.
- 그것은 설정을 오버라이드하는 것이다.