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 manager | keti/sc/data-manager | 8080 |
Ingest interface | keti/sc/ingest-interface | 8081 |
Data service broker | keti/sc/data-service-broker | 8082 |
UI | keti/sc/datacore-ui | 8083 |
Dashboard | keti/sc/datacore-usertool | 8084 |
Push agent | keti/sc/push-agent | - |
3.3.2. 파일 업로드
데이터 코어 모듈은 docker compose 형태로 배포되도록 사전에 구성되어 있습니다. 2.2장 (내부 링크)에서 복제한 데이터코어 Git 저장소(/home/centos/datacore_src
디렉토리)의 docker-compose
디렉토리의 모든 파일을 배포 디렉토리로 복사합니다.
배포에 필요한 파일은 아래와 같습니다.
- docker-compose.yml: 데이터 코어 모듈 배포 정보가 포함된 파일입니다.
- plugins.erl: rabbitmq 컨테이너에서 사용하는 플러그인이 정의된 파일입니다.
- 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 실행
배포 디렉토리로 이동
docker compose up 명령어 실행
$ docker compose up -d
3.3.5. Docker compose 실행 상태 확인
배포 디렉토리로 이동
docker compose ps 명령어 실행
$ docker compose ps
3.3.6. Docker compose 실행 종료
- 배포 디렉토리로 이동
- docker compose down 명령어 실행
$ docker compose down
3.3.7. 실행 확인
Datacore UI 접속 URL - http://localhost:8083
Datacore dashboard 접속 URL - http://localhost:8084
3.3.8. 어플리케이션 설정
데이터 코어 모듈의 각 어플리케이션은 컨테이너 형태로 실행되며 Docker 이미지 빌드 당시에 사용된 환경 설정을 덮어씌울 수 있습니다. 이 경우 컨테이너의 환경변수(environment)로 구성합니다. 각 어플리케이션의 설정 항목은 4장 (내부 링크)에 명시되어 있습니다.
환경변수 설정 방법은 아래와 같습니다.
- 4장에서 어플리케이션의 property명을 확인합니다.
docker-compose.yml
파일에서 변경하고자 하는 어플리케이션의 컨테이너를 찾습니다.- 해당 컨테이너의
environment
섹션에 아래와 같은 방법으로 property를 덮어씌웁니다.- property는 모두 대문자로 작성합니다.
.
는_
로 변경합니다.- 예시) Property
datasource.secondary.use.yn
=> environment variableDATASOURCE_SECONDARY_USE_YN