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라고 명명된 커스텀 네트워크를 생성한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.