본문으로 건너뛰기

3.3. Docker 이미지 배포 방식

3.3.1. 배포 환경

본 장에서 설명하는 모든 사항은 아래 배포 환경에서 구동된다고 가정합니다.

  • OS: CentOS 7
  • 사용자: centos
  • 홈 디렉토리: /home/centos
  • 배포 디렉토리: /home/centos/datacore
  • Docker: 23.0 이상
  • Docker compose: 16.0 이상

데이터 코어 모듈의 각 어플리케이션 별 Docker 이미지와 포트 번호는 아래와 같습니다. Docker 이미지는 2.2장 (내부 링크)를 통해 빌드되어 있다고 가정합니다.

어플리케이션Docker 이미지포트 번호
Data managerketi/sc/data-manager8080
Ingest interfaceketi/sc/ingest-interface8081
Data service brokerketi/sc/data-service-broker8082
UIketi/sc/datacore-ui8083
Dashboardketi/sc/datacore-usertool8084
Push agentketi/sc/push-agent-

3.3.2. 파일 업로드

데이터 코어 모듈은 docker compose 형태로 배포되도록 사전에 구성되어 있습니다. 2.2장 (내부 링크)에서 복제한 데이터코어 Git 저장소(/home/centos/datacore_src 디렉토리)의 docker-compose 디렉토리의 모든 파일을 배포 디렉토리로 복사합니다.

배포에 필요한 파일은 아래와 같습니다.

  1. docker-compose.yml: 데이터 코어 모듈 배포 정보가 포함된 파일입니다.
  2. plugins.erl: rabbitmq 컨테이너에서 사용하는 플러그인이 정의된 파일입니다.
  3. setup-db.sql: 데이터 코어 모듈의 모든 어플리케이션의 DDL/DML 스크립트가 통합된 파일입니다.

3.3.3. 데이터코어 모듈용 Docker network 생성

데이터 코어 모듈은 다른 Docker 컨테이너에서 접근할 수 없도록 분리되어야 합니다. docker-compose.yml파일은 citydatahub-datacore라는 Docker network를 사용하도록 사전 구성되어 있습니다. 아래 명령어를 입력하여 citydatahub-datacore Docker network를 생성합니다.

# Docker network 생성
$ docker network create citydatahub-datacore

# Docker network 생성 확인
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2d39ebf09e93 bridge bridge local
d7e90e0f47d6 citydatahub-datacore bridge local
d49d7c90cb76 host host local
414c5d4aa6ea none null local

3.3.4. Docker compose 실행

  1. 배포 디렉토리로 이동

  2. docker compose up 명령어 실행

    $ docker compose up -d

3.3.5. Docker compose 실행 상태 확인

  1. 배포 디렉토리로 이동

  2. docker compose ps 명령어 실행

    $ docker compose ps

    docker_compose_ps

3.3.6. Docker compose 실행 종료

  1. 배포 디렉토리로 이동
  2. docker compose down 명령어 실행
    $ docker compose down

3.3.7. 실행 확인

  1. Datacore UI 접속 URL - http://localhost:8083

    datacore_ui

  2. Datacore dashboard 접속 URL - http://localhost:8084

    dashboard

3.3.8. 어플리케이션 설정

데이터 코어 모듈의 각 어플리케이션은 컨테이너 형태로 실행되며 Docker 이미지 빌드 당시에 사용된 환경 설정을 덮어씌울 수 있습니다. 이 경우 컨테이너의 환경변수(environment)로 구성합니다. 각 어플리케이션의 설정 항목은 4장 (내부 링크)에 명시되어 있습니다.

환경변수 설정 방법은 아래와 같습니다.

  1. 4장에서 어플리케이션의 property명을 확인합니다.
  2. docker-compose.yml 파일에서 변경하고자 하는 어플리케이션의 컨테이너를 찾습니다.
  3. 해당 컨테이너의 environment 섹션에 아래와 같은 방법으로 property를 덮어씌웁니다.
    • property는 모두 대문자로 작성합니다.
    • ._로 변경합니다.
    • 예시) Property datasource.secondary.use.yn => environment variable DATASOURCE_SECONDARY_USE_YN