4.5.3 도커 컴포즈로 서비스 실행하기
도커 컴포즈는 도커 설치 과정의 일부로 설치되며 서비스를 그룹으로 정의한 후 단일 단위로 시작할 수 있는 서비스 오케스트레이션 도구다. 도커 컴포즈는 서비스별 환경 변수를 정의하는 기능도 있다.
도커 컴포즈는 시작할 서비스를 정의하는 데 YAML 파일을 사용한다. 각 장에 대한 도커 컴포즈 파일은 <<chapter#>>/docker/docker-compose.yml이며 해당 장에서 실행할 서비스를 정의하고 있다.
첫 번째 docker-compose.yml 파일을 작성해 보자. 다음 코드 예제는 docker-compose.yml 구조를 보여 준다.
코드 4-7 docker-compose.yml 파일
version: '3.7'
services:
licensingservice: ➊
image: ostock/licensing-service:0.0.1-SNAPSHOT ➋
ports:
- "8080:8080" ➌
environment:
- "SPRING_PROFILES_ACTIVE=dev"➍
networks:
backend: ➎
aliases:
- "licenseservice" ➏
networks:
backend: ➐
driver: bridge
➊ 시작한 서비스에 레이블을 적용한다. 이 서비스 이름은 도커 인스턴스가 시작할 때 이에 대한 DNS 엔트리가 되며, 다른 서비스가 액세스하는 데 사용된다.
➋ 도커 컴포즈는 먼저 로컬 도커 저장소에서 시작할 대상 이미지를 찾으려고 시도한다. 찾을 수 없다면 도커 허브(http://hub.docker.com)에서 확인한다.
➌ 시작한 도커 컨테이너의 포트 번호를 정의한다. 이 포트 번호는 외부에 노출된다.
➍ 시작하는 도커 이미지에 환경 변수를 전달한다. 이 경우에는 시작하는 도커 이미지에 SPRING_PROFILES_ACTIVE 환경 변수를 설정한다.
➎ 서비스가 속한 네트워크 이름을 지정한다.
➏ 네트워크상의 서비스에 대한 대체 호스트 이름을 지정한다.
➐ 디폴트 타입은 bridge이며 backend라고 명명된 커스텀 네트워크를 생성한다.