Sonic 테스트 플랫폼 배포 및 패키징 가이드

개요

개발 작업이 완료된 Sonic 플랫폼의 코드를 실제 환경에 배포하는 과정은 크게 직접 실행 방식과 Docker 컨테이너 활용 방식 두 가지로 나뉩니다. 각 구성 요소(Frontend, Server, Agent)별 빌드 및 배포 절차를 설명합니다.

1. 컴파일 후 직접 실행 방식

1.1 프론트엔드 (Frontend)

프론트엔드 정적 리소스를 빌드하여 웹 서버에 배치합니다.

# 의존성 설치 및 빌드
npm install
npm run build

빌드가 완료되면 생성된 dist 디렉토리를 서버의 Nginx 또는 Apache와 같은 웹 컨테이너 경로로 복사합니다.

1.2 서버 (Server)

서버 사이드는 Spring Boot 기반이므로 JAR 파일로 패키징하여 실행합니다. pom.xml에 빌드 설정이 포함되어 있어야 하며, 패키징 후 다음 명령어로 실행합니다.

# JAR 파일 실행
java -jar sonic-server-output.jar

1.3 에이전트 (Agent)

에이전트의 경우 환경에 맞는 바이너리 또는 실행 파일을 생성하여 배포합니다.

2. Docker 컨테이너 기반 배포

2.1 프론트엔드 Docker 빌드

프론트엔드 프로젝트 루트(sonic-client-web)에서 이미지를 생성합니다.

# 빌드 및 이미지 생성
npm install
npm run build
docker build -t custom-sonic-web:latest .

2.2 실행 중인 프론트엔드 컨테이너 수동 업데이트

이미지를 다시 빌드하지 않고 실행 중인 컨테이너의 정적 파일만 교체해야 할 경우 다음과 같은 절차를 따릅니다.

# 1. 로컬에서 빌드
npm run build

# 2. 실행 중인 컨테이너 ID 확인
docker ps

# 3. 빌드된 파일을 컨테이너 임시 경로로 복사
docker cp dist/ web_container_id:/tmp/dist

# 4. 컨테이너 내부 접속 후 파일 교체
docker exec -it web_container_id /bin/bash
rm -rf /usr/share/nginx/html/*
mv /tmp/dist/* /usr/share/nginx/html/

# 5. Nginx 설정 재로드
nginx -s reload

2.3 서버 Docker 빌드 및 이전

서버 사이드 패키징 시 주의할 점은 pom.xml 설정입니다. 기본 설정에 <pushImage>true</pushImage>가 포함되어 있다면, 권한이 없는 외부 저장소로의 업로드를 방지하기 위해 해당 부분을 주석 처리하거나 false로 변경해야 합니다.

# 서버 프로젝트 빌드
mvn clean package

빌드가 완료되어 로컬 Docker 환경에 생성된 이미지를 운영 서버로 이전하는 방법은 다음과 같습니다.

# 1. 로컬에서 이미지 파일로 저장
docker save custom-sonic-server:v1.0 > sonic_server_image.tar

# 2. 운영 서버로 파일 전송 후 이미지 로드
docker load < sonic_server_image.tar

3. 에이전트 배포 유의사항

에이전트는 실행 환경의 종속성에 따라 Docker 환경 또는 호스트 환경에서 독립적으로 패키징될 수 있습니다. 서버 및 프론트엔드 버전과 호환되는 버전을 선택하여 빌드 프로세스를 수행해야 합니다.

태그: Sonic docker SpringBoot frontend nginx

9월 11일 19:16에 게시됨