문제 상황

Tibero는 무료로 사용할 수 있는 데이터베이스가 아니며, 정식 라이선스가 없을 경우 최대 6개월 동안 유효한 데모 라이선스를 발급받아 사용해야 합니다. 이러한 이유로 공식적인 Tibero Docker 이미지도 배포되어 있지 않습니다.

회사 내부적으로는 Tibero 7의 이미지를 사내 위키를 통해 다운로드하여 사용하고 있었습니다. 로컬 환경에서 테스트 용도로 사용하는 데에는 큰 문제가 없었지만, 해당 이미지에는 치명적인 결함이 있었습니다.

Tibero를 지원하는 Flyway를 개발하면서 테스트 과정에서 이 Docker 이미지를 사용해야 했는데, 이러한 불편함을 매번 감수해야 했습니다. 이에 이미지 개선을 통해 개발 효율성을 높이고자 했습니다.

기존 Docker 이미지 실행 스크립트 분석

사내 위키를 통해 다운로드한 파일 중 docker-compose.yml을 사용하여 Docker를 실행하는 방법이 있었고, 해당 YAML 파일에서는 start.sh라는 셸 스크립트를 실행하도록 되어 있었습니다.

[start.sh]

#!/bin/sh

cp /usr/local/license.xml /tibero7/license/
/tibero7/config/gen_tip.sh
mkdir -p /usr/bin/pstack
/tibero7/bin/tbboot nomount
tbsql sys/tibero @'/usr/local/initial.sql'
/tibero7/bin/tbboot
/tibero7/scripts/system.sh -p1 tibero -p2 syscat -a1 y -a2 y -a3 y -a4 y -sod y
tail -f /dev/null%

스크립트 동작 흐름

  1. 라이선스 파일 복사: /usr/local/license.xml을 /tibero7/license/로 복사합니다.
  2. 설정 파일 생성: /tibero7/config/gen_tip.sh를 실행하여 데이터베이스 서버와 클라이언트의 설정 파일을 생성합니다.
  3. Tibero 인스턴스 기동 (Nomount 모드): /tibero7/bin/tbboot nomount 명령어로 Nomount 모드로 Tibero를 기동합니다.
  4. 초기 SQL 스크립트 실행: tbsql sys/tibero @'/usr/local/initial.sql' 명령어로 초기 설정을 수행합니다.
  5. Tibero 인스턴스 재기동 (Normal 모드): /tibero7/bin/tbboot 명령어로 Normal 모드로 Tibero를 기동합니다.