더북(TheBook)

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

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