- 배포가 실패하는 주된 원인은 환경 차이인데, 도커를 이용하면 패키지에 모든 의존 모듈이 함께 들어가기에 해결 가능하다.
10-1. 도커 컴포즈로 여러 개의 애플리케이션 배포하기
- 비운영 환경에서 다양한 버전을 용도 별로 나누어 사용하는데, 이런 경우 여러 컨테이너가 같은 포트로 요청을 받거나 서버 파일 하나를 여러 컨테이너에서 사용하려는 둥 환경마다 애플리케이션이 다르게 동작하는 것이 필요하다. 다른 내용의 이미지를 같은 디렉토리에서 실행하면, 도커는 이미 실행 중인데 왜 또 실행함?하고 실행을 안시켜준다..
- 도커 컴포즈는 도커 리소스가 어플리케이션의 일부인지를 판단하기위해 '프로젝트'개념을 사용한다. 도커 컴포즈가 도커 리소스를 만들 때 프로젝트 이름을 리소스 이름+컨테이너이름+번호 꼴로 지정하여 app1_web_2 컨테이너와 같이 생성된다. 이 이름이 같아서 생기는 문제이기에 이 프로젝트 이름을 별도로 바꾸자.
docker-compose -f ./toto-list/docker-compose.yml -p todo-test up -d # -p 옵션으로 프로젝트 이름을 todo-test로 따로 지정하여 실행. 일치되는 리소스 없기에 새로 컨테이너를 만든다.
docker container ls # 그럼 명명 규칙에 따라 todo-test_todo-web_1이 새로이 생성 됐을 것이라 추측할 수 있다.
docker container port todo-test_todo-web_1 80 # 해당 컨테이너의 포트를 80번으로 공개
- 이러면 무작위로 정해진 공개 포트를 찾아야하는(용도별로 다른 포트를 사용하는) 문제가 있기에 설정을 오버라이드하여 이를 해결한다.
10-2. 도커 컴포즈의 오버라이드 파일