목록
도커 운영을 위한 스크립트 sh 파일 대표 이미지

프로젝트 실행 가이드

1. 프로젝트 개요

본 프로젝트는 마이크로서비스 아키텍처(MSA)를 기반으로 구축된 시스템입니다. 각 기능은 독립적인 서비스로 분리되어 Docker 컨테이너 환경에서 실행됩니다. 주요 서비스는 다음과 같습니다.


  • API 서버 (Java): 시스템의 핵심 비즈니스 로직을 처리하는 백엔드 API 서버입니다.
  • 프론트엔드 서버 (Node.js): 사용자가 상호작용하는 웹 UI를 제공하는 서버입니다.
  • 데이터베이스 (MariaDB): 시스템의 데이터를 저장하고 관리하는 데이터베이스입니다.
  • 메시지 큐 (RabbitMQ): 서비스 간 비동기 통신 및 데이터 교환을 위한 메시지 브로커입니다.
  • WAL 서버 (Java): WAL(Write-Ahead Logging) 관련 처리를 담당하는 보조 서비스입니다.
  • PHPMyAdmin: 웹을 통해 MariaDB를 관리하기 위한 도구입니다.

모든 서비스의 실행 및 관리는 최상위 디렉토리에 위치한 셸 스크립트(.sh)와 Docker Compose 설정 파일(.yml)을 통해 이루어집니다.


2. 사전 준비 사항

본 프로젝트를 실행하기 위해 다음의 환경과 소프트웨어가 필요합니다.

  • 운영체제: Linux (테스트 환경 기준)
  • 필수 소프트웨어:
    • docker: 컨테이너 실행 환경
    • docker-compose: 다중 컨테이너 관리 도구
  • 프로젝트 경로: 모든 실행 스크립트는 프로젝트의 루트 디렉토리가 /home/service_idc 에 위치하는 것을 기준으로 작성되었습니다. 반드시 이 경로에 프로젝트를 위치시켜야 합니다.

3. 설치 절차

프로젝트 실행에 필요한 Docker 이미지를 빌드하고 초기 환경을 설정하는 과정입니다.

3.1. 프로젝트 위치

  • 다운로드한 프로젝트 압축 파일을 /home/service_idc 경로에 해제합니다.

3.2. 스크립트 실행 권한 부여

  • 터미널을 열고 프로젝트 루트 디렉토리 (/home/service_idc)로 이동한 후, 아래 명령어를 실행하여 모든 셸 스크립트에 실행 권한을 부여합니다.
    chmod +x ./*.sh
    

3.3. Docker 네트워크 생성

  • 서비스 간 통신을 위한 Docker 네트워크를 생성합니다.
    ./0_create_network.sh
    

3.4. Docker 이미지 빌드

  • 각 서비스의 Docker 이미지를 빌드합니다. 아래 스크립트들을 순서대로 실행합니다.
    ./1_1.mariadb_build_image.sh
    ./2_1.phpadmin_build_image.sh
    ./3_1.rabbit_build_image.sh
    ./4_1.wal_build_image.sh
    ./5_1.api_build_image.sh
    ./6_1.front_build_image.sh
    
  • 참고: *_2.*_tar2image.sh 스크립트는 .tar 아카이브 파일로부터 이미지를 로드하는 용도로, 이미지를 직접 빌드하는 위 과정을 따르는 것이 일반적입니다.

4. 실행 절차

설치가 완료된 후, 아래 절차에 따라 전체 시스템을 실행하거나 종료할 수 있습니다.

4.1. 전체 서비스 실행

  • 아래 스크립트를 실행하면 all.onoff.yml 파일을 참조하여 모든 서비스를 한 번에 시작합니다.
    ./alll.on.sh
    

4.2. 전체 서비스 종료

  • 아래 스크립트를 실행하면 실행 중인 모든 서비스를 한 번에 종료합니다.
    ./alll.off.sh
    

4.3. 개별 서비스 실행/종료

  • 특정 서비스만 개별적으로 실행하거나 종료해야 할 경우, 아래 예시와 같이 해당 서비스의 on/off 스크립트를 사용합니다.
    # API 서버만 실행
    ./5_3.api.on.sh
    
    # API 서버만 종료
    ./5_3.api.off.sh
    
    

5. 환경 설정 가이드

프로젝트의 주요 설정 파일 및 변수에 대한 안내입니다.

5.1. IP 주소 설정

  • 프론트엔드 -> API 서버 IP 주소 업데이트: 프론트엔드 서버가 API 서버를 호출할 때 사용하는 IP 주소를 설정합니다. 스크립트 실행 시 인자로 IP 주소를 전달해야 합니다.
    # 예시: API 서버 IP가 192.168.0.10일 경우
    ./0_update-api-ip-on-front.sh 192.168.0.10
    
  • API 서버 CORS 설정: API 서버의 CORS(Cross-Origin Resource Sharing) 정책에 프론트엔드 서버의 IP를 허용하도록 설정합니다.
    # 예시: 프론트엔드 서버 IP가 192.168.0.20일 경우
    ./0_update-cors-ip-on-api.sh 192.168.0.20
    

5.2. 프론트엔드 환경 변수

  • 프론트엔드 서버의 상세 설정은 아래 파일들에서 관리됩니다.
    • make/front/build/.env: 환경 변수 파일
    • make/front/build/config/api.config.js: API 관련 설정

5.3. 데이터베이스 초기화

  • MariaDB 컨테이너가 처음 생성될 때, FILE-DATA/mariadb/init/ 디렉토리 안의 .sql 파일들(init.sql, tables.sql 등)이 자동으로 실행되어 데이터베이스 스키마와 초기 데이터를 생성합니다.

5.4. SSL/TLS 인증서

  • 시스템에서 사용하는 SSL/TLS 인증서 파일들은 FILE-DATA/key/ 디렉토리에 위치합니다.

6. 트러블슈팅 & 팁

6.1. 로그 확인

  • 서비스 실행 중 문제가 발생할 경우, 가장 먼저 로그 파일을 확인해야 합니다. 각 서비스의 로그는 아래 경로에 저장됩니다.
    • API 서버 로그: FILE-DATA/logs/api/
    • RabbitMQ 로그: FILE-DATA/logs/rabbit/
    • WAL 서버 로그: FILE-DATA/logs/wal/

6.2. 스크립트가 실행되지 않을 경우

  • .sh 파일이 실행되지 않으면 실행 권한이 제대로 부여되었는지 확인합니다. (3.2. 절 참고)
  • 모든 스크립트는 프로젝트가 /home/service_idc에 있다고 가정하므로, 경로가 올바른지 다시 한번 확인합니다.

6.3. 데이터 백업

  • 데이터베이스 데이터, 로그, 인증서 등 영속적으로 보관해야 하는 모든 데이터는 FILE-DATA 디렉토리 하위에 저장됩니다. 시스템을 백업해야 할 경우 이 디렉토리를 백업하는 것을 권장합니다.